iOS自定义键盘扩展自动大写

时间:2016-01-02 22:28:12

标签: ios objective-c keyboard

我设计了自定义键盘扩展程序,我可以正确输入文字。但是我似乎无法弄清楚何时启用大写键盘和小写时。这主要是因为以下功能无法正确返回已输入的前/后文本。有时它们会返回零,有时只返回最后几个字符等。很多时候这些方法甚至都没有被调用。

- (void)textWillChange:(id<UITextInput>)textInput 

- (void)textDidChange:(id<UITextInput>)textInput

当我需要启用大写键盘时,我已经找到了以下场景:

  1. 文字长度= 0或零
  2. 输入句点后,我需要添加空格和大写键盘
  3. 当光标位于光标前的字符为句点或空格且在此之前为期间的位置时。
  4. 当用户选择整个文本“全选”
  5. 当用户选择整个文本并删除所有
  6. 当用户退格时,光标前的新字符是句点或空格,之前是句点。
  7. 当用户粘贴文本时,光标前的字符是句点或空格,之前是句点。
  8. 如果以上情况可行,是否也可以获得最后输入的“整个”单词,我可以将其用于字典搜索,例如预测输入?

    我已经阅读了苹果文档,其中说明用户希望自动大写,所以我确信这应该是可能的

    https://developer.apple.com/library/ios/documentation/General/Conceptual/ExtensibilityPG/Keyboard.html

1 个答案:

答案 0 :(得分:2)

E.G。 textField以您的UITextField实例命名。初始化后把它放进去。

textField.autocaptializationType = UITextAutocapitalizationTypeSentences

这应该在你提到的所有实例中给你大写字母。

确定您的自定义键盘采用UITextInputTraits协议,请执行以下操作。

@interface MyCustomKeyboard : UITextInput <UITextInputTraits> //Now adopts the UITextInputTraits protocol.

 - (instancetype)init {
     self = super.init;

     if(self) {
         //Here you can set the properties that come with the protocol
         self.autocapitilizationType = UIAutocapitalizationTypeSentences;

      }
}