在iOS 8上使用自定义键盘中的deleteBackward删除整个单词

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)

}

Sta*_*tik 5

斯威夫特 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)


Tom*_*yer 0

我也在寻找这个问题的答案。到目前为止,我必须使用 for 循环来逐个字母地删除向后的字母。