xab*_*s78 16 keyboard objective-c ios8
我开始开发iOS8和objective-c的自定义键盘.我想创建一个删除按钮,在插入点,单击时删除单个字符,并在按住按钮时删除整个单词.deleteBackward似乎删除了一个字符,但在Apple开发者文档中我发现:
若要在调用deleteBackward方法时确定要删除的文本数量,请从textDocumentProxy属性的documentContextBeforeInput属性获取插入点附近的文本上下文,如下所示:
NSString *precedingContext = self.textDocumentProxy.documentContextBeforeInput;
Run Code Online (Sandbox Code Playgroud)
然后,您可以删除您认为合适的内容 - 例如,单个字符,或者返回到空白字符的所有内容.
但我不明白如何实现这一点......有没有办法删除一个完整的单词?
编辑:我找到了解决方案......它是documentContextBeforeInput上的一个简单的标记:
-(void)pressDeleteKey{
NSArray *tokens = [self.textDocumentProxy.documentContextBeforeInput componentsSeparatedByString:@" "];
for (int i = 0; i < [[tokens lastObject] length];i++) {
[self.textDocumentProxy deleteBackward];
}
Run Code Online (Sandbox Code Playgroud)
}
斯威夫特 1.2 解决方案:
extension String {
var length : Int {
get{
return count(self)
}
}
}
func deleteLastWord() {
if let textArray:[String]? = proxy.documentContextBeforeInput?.componentsSeparatedByString(" "){
if let validArray = textArray{
for var i=0; i<validArray.last!.length; i++ {
proxy.deleteBackward()
}
}
}
}
Run Code Online (Sandbox Code Playgroud)