CustomKeyBoardExtension中的当前文本选择

时间:2014-09-25 04:23:28

标签: objective-c ios8 uiinputviewcontroller ios8-extension

我正在尝试撰写 Custom Keyboard Extension

我正在寻找知道 CustomKeyboardExtension 中光标在UITextFieldUITextView ...等位置的方式...但我看不到这样的事情。

我看到SwiftKey应用程序(http://swiftkey.com)可以做到(或做类似的事情)。当我更改光标时,建议文本将会改变(见下图)。

问:我们如何才能获得当前的文字选择?

...

更新日期:29/09/2014

好吧,我太傻了。我们可以使用documentContextBeforeInput属性的documentContextAfterInputtextDocumentProxy方法。我以为“之前”,“之后”是关于时间的。实际上这是关于这个职位的。

抱歉全部!我浪费了你的时间:(

1 个答案:

答案 0 :(得分:1)

创建lastWordBeforeInput方法......

-(NSString *) lastWordBeforeInput{
    NSArray *arrayOfSplitsString = [self.textDocumentProxy.documentContextBeforeInput componentsSeparatedByString:@" "];
    int countIndex = arrayOfSplitsString.count - 1;
    NSCharacterSet *ChSet = [NSCharacterSet alphanumericCharacterSet];
    NSCharacterSet *invertedChSet = [ChSet invertedSet];
    while (countIndex > 0) {
        NSString *lastWordOfSentance = [arrayOfSplitsString objectAtIndex:countIndex--];
        if ([[lastWordOfSentance stringByTrimmingCharactersInSet:invertedChSet] rangeOfCharacterFromSet:ChSet].location != NSNotFound) {
            return [lastWordOfSentance stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
        }
    }

    return @"";
}

然后根据需要使用textWillChange / textDidChange调用它。

- (void)textWillChange:(id<UITextInput>)textInput {
    // The app is about to change the document's contents. Perform any preparation here.
    NSLog(@"%@",[self lastWordBeforeInput]);
}

希望这会对你有所帮助。