4

書いてみますCustom Keyboard Extension

CustomKeyboardExtensionUITextFieldでカーソルがどこにあるかを知る方法を探していますUITextView...など...しかし、そのようなものは何も表示されません。

SwiftKeyアプリ(http://swiftkey.com)がそれを実行できる(またはそのようなことを実行できる)のを見ました。カーソルを変更すると、提案テキストが変更されます (下の図を参照)。

Q:現在のテキスト選択を取得するにはどうすればよいですか?

...

更新: 2014 年 9 月 29 日

わかりました、私はとても愚かです。documentContextBeforeInputプロパティのdocumentContextAfterInputメソッドを使用できtextDocumentProxyます。「Before」、「After」がそろそろかなと思いました。実はポジションの話。

ごめんなさい!私はあなたの時間を無駄にしました:(

4

1 に答える 1

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]);
}

これがあなたを助けることを願っています。

于 2014-09-27T12:51:08.043 に答える