Проверьте, пуст ли вводимый текст на пользовательской клавиатуре для iOS 8

Я разрабатываю пользовательскую клавиатуру для iOS 8, и я хотел бы проверить, является ли вводимый текст пустым или нет, чтобы включить или отключить кнопку возврата, если это необходимо (self.textDocumentProxy.enablesReturnKeyAutomatically == YES).

Вот что я сделал до сих пор:

- (void)textDidChange:(id<UITextInput>)textInput
{
    NSString *inputText = [self.textDocumentProxy.documentContextBeforeInput stringByAppendingString:self.textDocumentProxy.documentContextAfterInput];

    if (self.textDocumentProxy.enablesReturnKeyAutomatically)
    {
        self.returnButton.enabled = !(inputText.length == 0);
    }
    else
    {
        self.returnButton.enabled = YES;
    }
}

Но если «Auto-Enable Return Key» включена, кнопка возврата всегда отключена, даже если вводимый текст не пуст. Как правильно проверить, является ли вводимый текст пустым или нет? Спасибо.


person iOS Dev    schedule 22.08.2014    source источник
comment
Будьте осторожны с 'documentContextBeforeInput' и 'documentContextAfterInput', оба могут быть 'nil'   -  person Bersaelor    schedule 02.02.2015
comment
@Bersaelor Конечно, спасибо за совет.   -  person iOS Dev    schedule 03.02.2015
comment
Привет, мы можем определить слово, набранное с пользовательской клавиатуры.   -  person iPhone Programmatically    schedule 03.04.2015


Ответы (1)


Попробуйте это, снова проверено

Отключите ваш ключ возврата в функции ниже, которая выполняет вашу операцию deleteBackward

- (IBAction)returnBackSpacePressed
{
    [self.textDocumentProxy deleteBackward];

    if(self.textDocumentProxy.documentContextBeforeInput.length-1 == 0)
     {
       [self.textDocumentProxy insertText:@"Now disable your return key"];
       // Here your inputTest is now empty
     }
}

Конец включает ваш ключ возврата, когда когда-либо ваш insertTest

- (void)putChar:(NSString *)charactor
{
   [self.textDocumentProxy insertText:charactor];
// enable your return key here again, because now your inputText is not empty
}
person Anand Suthar    schedule 22.08.2014
comment
Спасибо. Ваш ответ помог мне решить мою проблему. - person iOS Dev; 25.08.2014
comment
Привет, мы можем определить слово, набранное с пользовательской клавиатуры. - person iPhone Programmatically; 03.04.2015
comment
У меня сработало, если (self.textDocumentProxy.documentContextBeforeInput.length == 0) после [self.textDocumentProxy insertText:charactor]; - person landonandrey; 28.12.2015