2014-09-25 4 views
4

Я пытаюсь написать Custom Keyboard Extension.Текущий выбор текста в CustomKeyBoardExtension

Я искал способ узнать, где находится курсор на UITextField, UITextView ... и т.д. в CustomKeyboardExtension ... но я не вижу ничего подобного.

Я видел приложение SwiftKey (http://swiftkey.com) может сделать это (или сделать что-то подобное). Когда я меняю курсор, текст предложения будет меняться (см. Ниже рисунки).

Вопрос: Как мы можем получить текущий текст?

...

UPDATE: 29/09/2014

Хорошо, я так глупо. Мы можем использовать documentContextBeforeInput, documentContextAfterInput методы textDocumentProxy собственности. Я думал, что «До», «После» - это время. На самом деле речь идет о позиции.

Извините, все! Я потратил свое время :(

+2

'textDocumentProxy.documentContextBeforeInput' –

+3

Просто« documentContextBeforeInput »и« documentContextAfterInput »также не обрезают его. Если пользователь открывает текст, избранные, оба будут пусты, но определенно текст в поле. – Bersaelor

ответ

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

 Смежные вопросы

  • Нет связанных вопросов^_^