iOS 自定义键盘类型

iOS Custom Keyboard Types

我正在开发自定义键盘,但 Apple 审核团队拒绝了它,因为该键盘不支持 'Numbers and Decimals' 类型。

所以,我发现问题是当文本字段需要那些特定类型的键盘(例如插入年龄、度量或其他数值)时,我的键盘 'misses to respond'。

我从 Apple 文档中了解到,您必须响应每个文本对象的 UIKeyboardTpye 属性。

我搜索了 UIInputViewController 的特定代表,但找不到与之相近的内容。

在这个论坛中,我发现检查当前所需的键盘类型的一个好地方是 textDidChange: 委托,但是,它没有被调用。

我想当您的键盘以某种方式 'declares' 到 iOS 可以处理数字或小数类型时,就会调用此响应程序。事实上,我创建了一个简单的应用程序,其中包含一个简单的 UITextView,需要十进制键盘类型:

textView.keyboardType = UIKeyboardTypeDecimalPad;

然后我在键盘扩展 Input View Controller textDidChange: 委托中放了一个 NSLog()

当我点击文本视图时,我的委托没有被调用,而是显示了标准的十进制小键盘,并且在 Xcode 控制台中我看到了以下消息:

Can't find keyplane that supports type 8 for keyboard iPhone-Portrait-DecimalPad; using 405786210_Portrait_iPhone-Simple-Pad_Default

我还注意到,当 UITextView 需要不允许的键盘类型(即电话键盘)时,会出现此消息。所有其他键盘类型都不会发出该消息,并且会显示自定义键盘并正确调用 textDidChange: 委托。

数字和小数类型肯定是允许的,并且对于审核小组成员来说是必须的。为什么行为像禁止类型?

我认为我们需要 'declare',例如在 info.plist 中我们的扩展程序支持各种键盘类型,但是......或者更简单地说......我不明白这一点...所以...我在问...如何向我的键盘扩展添加多种键盘类型?

非常感谢您的帮助!

第二次拒绝我的键盘扩展后,他们给我发了一张截图。我注意到他们通常在 iPad 上测试应用程序。这让我想到。

经过一些测试后发现,数字和小数类型在 iPhone 和 iPad 上的响应方式不同。

在 iPhone 上,需要数字或十进制类型键盘的文本视图始终显示 iOS 键盘,即不调用自定义扩展。

另一方面,iPad 需要数字或小数类型键盘的文本视图激活自定义扩展。

终于在提供了一个标准的数字键盘(虽然我的键盘是手写技术)后通过了。