2016-01-02 86 views
11

我设计了自定义键盘扩展,并且能够正确输入文本。然而,我似乎无法弄清楚什么时候启用大写键盘和小写字母。这主要是因为以下功能无法正确返回已输入的文本之前/之后。有时他们会返回零,有时只有最后几个字符等等。很多时候,这些方法甚至根本就没有被调用。iOS自定义键盘扩展自动大写

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

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

我想通了以下场景时,我需要让我的大写字母键盘:

  1. 文本长度为0或零
  2. 当进入一个时期,我需要添加一个空格和大写键盘
  3. 将光标放置在光标之前的字符为句号或空格之前且该句号为句点之前的位置。
  4. 当用户选择整个文本“全选”
  5. 当用户选择了整个文本,并删除所有
  6. 当用户退格和新的字符之前光标是句点或空格在此之前,是一段。
  7. 当用户粘贴文本和光标之前的字符是一个句点或一个空格之前,那是一个句点。

此外,如果以上是可能的,是否有可能也得到最后输入的“整个”字,我可以用于字典搜索,如预测类型?

我已阅读苹果文档它指出,用户希望自动大写,所以我敢肯定这应该是可能

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

+0

您是否找到了解决方案? – Sekhar

回答

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; 

     } 
} 
+0

如何获取UIInputText实例?我没有看到那个地方:( –

+0

哦,我认为你已经到了一些东西了!让我尝试阅读更多有关'UITextInput'的文字确实改变方法返回并看看是否有方法来查找文本。给你! –

+0

Xcode在制作键盘扩展程序时遇到的最大问题是slog和断点不能与设备一起工作哦,在模拟器上测试后会回复给你 –