那里。
简短的前言。 我有一个iOS游戏,玩家可以输入他们的名字。对于输入,我使用标准的iOS键盘。游戏使用OpenGL ES 2.0作为它的渲染引擎。
一切正常,只有当我在iPad上添加中文手写键盘时,在尝试输入播放器名称时切换到它,然后我开始非常快速地将输入模式从听写改为手写和返回。因此,我只是坐在那里,当手写键盘处于活动状态并且“完成”时,随机点击听写按钮。按钮,当Siri活跃时。
一段时间后,键盘在听写和手写模式之间的某个地方挂起。它没有回应“完成”。按钮。关闭申请和重新开放会有所帮助,但这不是一种选择。
在屏幕截图(Screenshot of the keyboard)上,您可以看到Siri模式在键盘输入模式中占主导地位,但底部的矩形是手写输入模式的一部分。
所以,问题是:我可以对此问题采取任何措施,或者我对iOS键盘没有任何影响力吗?
P.S。更多细节: 对于输入我使用隐藏(在屏幕外)UITextField。当我需要显示键盘时,我将此textField作为第一个响应者并弹出键盘。
有一条内部错误消息: "请求caretRectForPosition:位置超出NSTextStorage(-1)" 我通过基于UITextField创建自定义类并重新定义此方法来解决此问题:
- (CGRect)caretRectForPosition:(UITextPosition *)position
{
CGRect rect = [super caretRectForPosition:position];
if (rect.origin.x == INFINITY || rect.origin.y == INFINITY) {
rect = CGRectMake(0, 0, 0, 0);
}
return rect;
}
它确实有助于消除内部错误,但对键盘挂起没有帮助。