2014-09-25 48 views
4

我正在嘗試編寫Custom Keyboard ExtensionCustomKeyBoardExtension中的當前文本選擇

我正在尋找了解光標所在的UITextFieldUITextView ...等在CustomKeyboardExtension的方式......但我沒有看到這樣的事情。

我看到SwiftKey應用程序(http://swiftkey.com)可以做到這一點(或做類似的事情)。當我改變光標時,建議文本會改變(見下面的圖片)。

問:我們如何獲得當前的文本選擇?

...

更新:29/09/2014

好了,我很愚蠢的。我們可以使用documentContextBeforeInput,documentContextAfterInput方法textDocumentProxy屬性。我認爲「之前」,「之後」是關於時間的。其實這是關於這個位置的。

對不起所有!浪費我你的時間:(

+2

'textDocumentProxy.documentContextBeforeInput' – 2014-09-25 16:08:10

+3

只要'documentContextBeforeInput'和'documentContextAfterInput'也不會削減它。如果用戶打開一個自動s的文本當選後,兩者都將是空的,但在該領域肯定有文字。 – Bersaelor 2015-02-02 17:45:48

回答

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

希望這將幫助你。

+1

不回答問題:「問:我們如何獲得當前的文本選擇?」 – floatingpoint 2016-01-05 03:09:06