将输入模式从听写改为手写时,iOS键盘会挂起

时间:2015-04-24 10:59:41

标签: ios objective-c keyboard

那里。

简短的前言。 我有一个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;
}

它确实有助于消除内部错误,但对键盘挂起没有帮助。

0 个答案:

没有答案