在iOS 8键盘扩展中处理返回键

5

我正在开发一个iOS 8的键盘扩展程序,目前当用户点击我的Return键时,我会运行以下代码:

[self.textDocumentProxy insertText:@"\n"];

这在大多数地方都可以正常工作。但是,在联系人应用程序中,如果我编辑一个联系人,选择名字字段,然后按回车键,什么也不会发生。它没有像预期的那样移动到下一个字段。这与默认键盘形成对比,后者确实会移动到下一个字段。

我做错了什么吗?

1个回答

1

是的。实际上,每个textDocumentProxy都有自己的UIReturnKeyType。根据这个类型,应该更改由您的Return键使用的方法。

   typedef NS_ENUM(NSInteger, UIReturnKeyType) {
    UIReturnKeyDefault,
    UIReturnKeyGo,
    UIReturnKeyGoogle,
    UIReturnKeyJoin,
    UIReturnKeyNext,
    UIReturnKeyRoute,
    UIReturnKeySearch,
    UIReturnKeySend,
    UIReturnKeyYahoo,
    UIReturnKeyDone,
    UIReturnKeyEmergencyCall,
   };

在您的情况下,如果您看到当前的 self.textDocumentProxy.returnKeyType 返回 UIReturnKeyNext,请实现跳转到下一个响应者。

我知道你的意思。我正在调查,似乎除此之外,self.textDocumentProxy.returnKeyType总是返回nil。也许键盘扩展被禁止访问这些属性。 - DmitryoN
我还没有遇到returnKeyType为nil的问题,尽管我只在textDidChange:方法中检查它。此时,我会将其本地保存。 - Ben Williams
我一直在尝试使用returnKeyType来开发我的键盘扩展功能。需要注意的是:在大多数应用程序中,returnKeyType返回实际的返回键类型(0、1等)。但是在联系人中,它总是返回0。这可能是因为该值被设置为默认值0,或者属性访问被拒绝了。然而,在检查邮件应用程序时,它也总是返回0,但是键盘扩展的返回键行为却不同:有时会跳到下一个字段,有时只是换行或什么都不做。 - DmitryoN
这可能意味着,只要输入的是@"\n",returnKey 应该可以正常工作,而且邮件应用程序中每个字段的 returnKeyType 都已设置好了,只是键盘扩展程序没有访问这些属性的权限。你能确认一下吗? - DmitryoN
这似乎也是在我这边的情况。我猜我们正在接近第三方键盘在此时此刻所能做到的限制。 - Ben Williams
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接