【问题标题】:iOS Custom Keyboard Extension auto capitalizationiOS 自定义键盘扩展自动大写
【发布时间】:2016-04-06 21:32:54
【问题描述】:

我设计了一个自定义键盘扩展,我能够正确输入文本。但是,我似乎无法弄清楚何时启用大写键盘以及何时启用小写。这主要是因为以下函数没有正确返回已经输入的前后文本。有时它们会返回 nil,有时只返回最后几个字符等。很多时候甚至根本不调用这些方法。

- (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

【问题讨论】:

  • 您找到解决方案了吗?

标签: ios objective-c keyboard


【解决方案1】:

例如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;

      }
}

【讨论】:

  • 如何获取 UIInputText 实例?我在任何地方都没有看到:(
  • 哦,我想你在做某事!让我尝试阅读更多关于文本确实更改方法返回的UITextInput 的信息,看看是否有办法找到文本。会回复你的!
  • Xcode 在制作键盘扩展应用程序时最大的问题是 slog 和断点在设备上不起作用。在模拟器上测试后会回复您
  • 我一直在尝试使用 UITextInput 进行一些操作,但这不是一个对象。这是一个协议。查看文档,我看不到任何启用 UITextAutocapitalizationTypeSentences 的方法。您还有其他想法吗?
  • 那又怎样?如果你有 UITextInput 变量输入,你可以检查它是否符合 UITextInputTraits 协议,如果符合,则进行转换: id inputTraits = input; inputTraints.autocapitalizationType - 是您需要的值。
猜你喜欢
  • 1970-01-01
  • 2015-05-30
  • 2022-01-10
  • 1970-01-01
  • 1970-01-01
  • 2014-11-27
  • 1970-01-01
  • 2016-03-28
  • 1970-01-01
相关资源
最近更新 更多