[英]How to get the current word being typed?
我正在为iOS 8创建自定义键盘扩展名,但无法尝试反映出坐在键盘顶部的UILabel上正在键入的当前单词(请考虑自动更正)。 到目前为止,我编写的代码反映的是光标之前的句子,而不是所写的句子,而是光标从一个位置移动到另一位置时反映的句子。 我想要达到的目的与本机键盘中的第一个自动更正框完全一样。 有人介意告诉我我做错了吗?
码:
override func textWillChange(textInput: UITextInput) {
var tokens = (self.textDocumentProxy as! UITextDocumentProxy).documentContextBeforeInput .componentsSeparatedByString(" ") as NSArray
var lastWord = tokens.lastObject as! String
println(lastWord)
bannerView?.btn1.setTitle(lastWord, forState: .Normal)
}
我尝试设置一个条件,如果beforeCursor包含一个空格/句点/逗号来将按钮标题设置为""
但是从长远来看,这是无效的,因为我需要获取单词才能进行自动更正特征。
编辑:
我已经弄清楚了如何在光标之前得到单词(更新了上面的代码),但是没有找到如何在添加每个字母时更新标签的方法。 func textWillChange(textInput: UITextInput)
无法正常工作。 不是我,是她。
谢谢!
您应该使用textDocumentProxy
你的财产UIInputViewController
:
let proxy = self.textDocumentProxy as! UITextDocumentProxy
要输入该单词,我建议如下所示:
var lastWordTyped: String? {
if let documentContext = proxy.documentContextBeforeInput as NSString? {
let length = documentContext.length
if length > 0 && NSCharacterSet.letterCharacterSet().characterIsMember(documentContext.characterAtIndex(length - 1)) {
let components = documentContext.componentsSeparatedByCharactersInSet(NSCharacterSet.alphanumericCharacterSet().invertedSet) as! [String]
return components[components.endIndex - 1]
}
}
return nil
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.