【问题标题】:Handling Return key in iOS 8 keyboard extension在 iOS 8 键盘扩展中处理 Return 键
【发布时间】:2014-10-01 22:03:25
【问题描述】:

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

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

这在大多数地方都可以正常工作。但是,在“联系人”应用程序中,如果我编辑联系人,选择名字字段,然后按 Return,则没有任何反应。它不会按预期移动到下一个字段。这与默认键盘不同,默认键盘会移动到下一个字段。

我做错了吗?

【问题讨论】:

    标签: ios objective-c ios8


    【解决方案1】:

    是的。实际上每个 textDocumentProxy 都会有它的 UIReturnKeyType。根据您的 Return 键使用的方法应更改。

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

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

    【讨论】:

    • 是的,但是我如何跳转到下一个响应者?这似乎不是我可以在 textDocumentProxy 上调用的方法?
    • 我知道你的意思。我现在正在研究它,似乎在 self.textDocumentProxy.returnKeyType 之上总是返回 nil 。也许键盘扩展被禁止访问这些属性。
    • 我没有遇到 returnKeyType 为 nil 的问题,尽管我只是在 textDidChange: 方法中检查它。此时我将其保存在本地。
    • 我在键盘扩展中使用 returnKeyType 已经有一段时间了。需要注意的是:在大多数应用程序中,returnKeyType 返回实际的返回键类型(0、1 等)。但是,在联系人中,它总是为我返回 0。可能是因为该值设置为默认值,即零,或者可能拒绝属性访问。但是,在检查 Mail 应用程序时,它也总是返回 0,但是键盘扩展的返回键中的返回键的行为是不同的:有时它跳转到下一个字段,有时它只是换行或什么都不做。
    • 这可能表明returnKey只要输入@“\n”就可以正常工作,并且Mail应用程序中每个字段的returnKeyType都已设置,只是键盘扩展没有权限访问这些属性。你能确认一下吗?
    猜你喜欢
    • 2014-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多