Подавление кнопки выбора языка iPhone

Сейчас я работаю над приложением, которое содержит раздел регистрации учетной записи. Одно поле с secureTextEntry = NO (только для регистрации). Идея в том, что это ускорит регистрацию и, надеюсь, увеличит количество регистраций. Для меня достаточно просто разместить обычное поле UITextField, но если у пользователя есть дополнительные языковые клавиатуры, он может ввести символы, не связанные с паролем. В отличие от когда secureTextEntry = YES.

Я знаю, что могу

textField.keyboardType = UIKeyboardTypeASCIICapable

чтобы текстовое поле отображало сначала клавиатуру ASCII, но у пользователя все еще будет кнопка переключения клавиатуры, которая позволит ему перейти к нежелательным символам.

Есть ли простой метод для подавления международной кнопки или принудительной клавиатуры только ASCII без международной кнопки?

[РЕДАКТИРОВАТЬ] Другой, возможно, лучший вариант - подавить многобайтовые клавиатуры или даже отобразить текст в случае secureTextEntry = YES здесь каких-либо идей?

[РЕДАКТИРОВАТЬ СНОВА] Я решил, что подавлять международную кнопку - это действительно плохая идея, поскольку все не-многобайтовые символы должны быть разрешены.


person Andrew Winter    schedule 13.01.2011    source источник
comment
Вы спросили, и кто-то нашел время, чтобы ответить. Если этот вопрос удален, Олаф теряет ответ и повтор.   -  person    schedule 13.01.2011


Ответы (1)


Взгляните на -(BOOL) textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString*)textEntered.

Если ваши пользователи вводят что-то, что не нравится вашему паролю, удалите это. Просто убедитесь, что они понимают, что конкретное письмо не принято. В противном случае пользователи будут смотреть на клавиатуру, но не на экран, и предполагать, что, поскольку они коснулись кнопки, символ введен в пароль.

Это может быть проще, чем переделывать всю клавиатуру.

person Olaf    schedule 13.01.2011
comment
Я немного поигрался с этим, но это немного странно, когда пользователь нажимает кнопку и ничего не отображается в текстовом поле. Если на пользовательской клавиатуре нет символов ASCII, то ничего нельзя будет ввести. - person Andrew Winter; 13.01.2011
comment
Я понимаю вашу точку зрения. С другой стороны, мне интересно, насколько надежными должны быть ваши пароли. Пароль, состоящий только из символов ASCII, небезопасен. - person Olaf; 13.01.2011
comment
Я полагаю, что лучшим вариантом может быть подавление многобайтовых клавиатур или даже отображение текста в случае, если secureTextEntry = YES. Похоже, secureTextEntry = YES просто подавляет многобайтовость. - person Andrew Winter; 13.01.2011
comment
Я искал и проработал, и, похоже, нет способа подавить международный вариант, не было бы разумным вообще, единственный способ действительно сделать это - сделать то, что вы предложили, и предотвратить ввод некоторых символов. Спасибо. - person Andrew Winter; 13.01.2011