клавиатура iPhone, индивидуальная обработка - PullRequest
0 голосов
/ 26 февраля 2012

Мне нужно реагировать определенным образом на мое приложение для iPhone, когда пользователь печатает внутри какого-либо поля UITextView.

Три примера:

  1. Я хочу отклонить клавиатуру, если пользователь введет: 'E'.
  2. Я хочу перейти к новой строке ввода, если пользователь введет: 'nN'.
  3. Я хочу игнорировать, если пользователь вводит: 'A' или 'b'.

Я уверен, что должен быть довольно простой способ сделать то, что я хочу. Но, посмотрев некоторое время в сети, я не нашел четкого ответа.

Какой путь?

Спасибо за любой совет.

Ответы [ 3 ]

1 голос
/ 26 февраля 2012

Если вы используете UITextField, дайте текстовому полю делегат (реализующий протокол UITextFieldDelegate), а в делегате внедрите textField:shouldChangeCharactersInRange:replacementString:. Изучите замещающую строку и примите меры в зависимости от того, содержит ли она искомые символы.

Если вы используете UITextView, дайте текстовому представлению делегата (реализующего протокол UITextViewDelegate), а в делегате внедрите textView:shouldChangeTextInRange:replacementText:.

1 голос
/ 26 февраля 2012

Вы можете попробовать реализовать это в вашем UITextViewDelegate:

https://developer.apple.com/library/ios/#documentation/uikit/reference/UITextViewDelegate_Protocol/Reference/UITextViewDelegate.html

Отметьте replacementText. Если это @ "e", вызовите resignFirstResponder в UITextView и верните NO.

Если это @ "A" или @ "b", вернуть NO.

Я не совсем уверен насчет другого, но вы, вероятно, можете справиться с этим и здесь и вернуть NO.

0 голосов
/ 26 февраля 2012

Я простой способ отменить запрет A и B - сделать простую вещь, подобную этой (Вы бы включили таймер проверки, чтобы запустить пустоту)

- (void) something {

if([statusString isEqualToString:@"a"]){
    statusString == @"";
}

}

Это просто удалит все, если пользователь наберет a. Это может быть не совсем то, что вы хотите, но я хотел дать старт

...