Как определить нажатую клавишу возврата и ответить на нее с помощью протокола UIKeyInput?

У меня есть табличное представление, которое отображает список, который я хочу, чтобы пользователь мог редактировать. Чтобы сэкономить место и облегчить просмотр, я создал пользовательскую панель инструментов, которая соответствует протоколу UIKeyInput, чтобы я мог использовать клавиатуру без использования каких-либо текстовых полей. Все идет нормально. У меня есть изменяемая строка, которая обрабатывает ввод с клавиатуры:

- (void)insertText:(NSString *)text {
    if (!itemForList) {
        itemForList = [NSMutableString string];
    }    
    [itemForList appendString:text];

}

То, что я не могу понять, как это сделать, это определить, когда пользователь нажимает клавишу возврата. Это важно, потому что мне нужно иметь возможность взять строку, введенную пользователем, и добавить ее в изменяемый массив, из которого отображается табличное представление, а затем сбросить строку для обработки нового ввода. Буду очень признателен за любую помощь в этой области. Спасибо, парни.


person Sam Hazleton    schedule 06.03.2012    source источник
comment
Хейзелтон, добро пожаловать в StackOverflow. Я уверен, что вы не поняли, но вы не должны менять вопрос на совершенно новый вопрос. Похоже, что на ваш первоначальный вопрос был дан ответ, и этот ответ принят (правильно). Если у вас есть другой связанный вопрос, отправьте другой вопрос и, возможно, ссылку на этот вопрос для контекста. Исходный вопрос должен быть восстановлен, чтобы он мог помочь другим.   -  person NJones    schedule 07.03.2012
comment
спасибо, хотелось бы восстановить. Есть ли способ восстановить прошлый черновик, или мне нужно просто сделать все возможное, чтобы вспомнить, что я опубликовал?   -  person Sam Hazleton    schedule 08.03.2012


Ответы (1)


Пробовали использовать escape-символы? Пример:

- (void)insertText:(NSString *)text {
  if ([text isEqualToString:@"\n"]) {
    //do whatever you want to do when user taps the return key
  }
  if (!itemForList) {
    itemForList = [NSMutableString string];
  }
  [itemForList appendString:text];
}

Надеюсь, поможет

person Novarg    schedule 06.03.2012
comment
Я этого не пробовал, я просто подумал о том, чтобы протестировать его с помощью кода ascii, и я записал его, но еще не проверял. если не получится попробую так. - person Sam Hazleton; 07.03.2012
comment
На самом деле у меня есть связанный с этим вопрос: я раньше использовал табличные представления с клавиатурами и всегда использовал NSNotificationCenter, чтобы определить, когда keyBoardDidShow или KeyBoardWillHide. По какой-то причине тот же код не будет работать в этом случае. Я попробовал это с ViewController в качестве наблюдателя, а затем с панелью инструментов, которая вызывает клавиатуру в качестве наблюдателя, и, похоже, ни один из них не работает. - person Sam Hazleton; 07.03.2012
comment
@SamHazleton, если бы вы предоставили код о том, как вы работаете с этими ячейками и как выглядит клавиатура, я мог бы вам помочь. И, пожалуйста, проголосуйте за ответ :) - person Novarg; 07.03.2012
comment
отредактировал мой вопрос, чтобы отразить новые данные. не позволил бы мне проголосовать за ваш ответ, извините - person Sam Hazleton; 07.03.2012
comment
На самом деле я только что задал совершенно новый вопрос, который включает в себя эту вторую проблему. Если вы хотите взглянуть на него, я был бы признателен. ссылка - person Sam Hazleton; 08.03.2012
comment
мои методы deletebackward и insertText не вызываются в подклассе. Любая помощь ? - person nr5; 18.10.2013