UIKeyboardTypeNumberPad тип букв? - PullRequest
       6

UIKeyboardTypeNumberPad тип букв?

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

Я действительно хочу сделать клавиатуру, которая является UIKeyboardTypeNumberPad, но вместо того, чтобы показывать 4 в текстовом поле при нажатии кнопки 4, я хочу, чтобы она выделяла G в течение примерно 5 секунд, и пока она подсвечивается, если я нажимаю сновазатем идет к h, затем к i, и для всех букв, так что 2 будет начинаться с A, затем b, а затем с, если щелкнуть несколько раз?я узнал на IOS, что у них есть встроенный, который делает это, но это не совсем UIKeyboardTypeNumberPad и его для японского, он покажет, и наберет в США, но все еще немного по-японски и трудно использовать, потому что это не совсем полныйUIKeyboardTypeNumberPad.как 0 - пробел или переходите к следующей букве, но не к японской.так как я могу написать это для моего приложения?

Ответы [ 2 ]

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

Правильный способ сделать это - создать собственный вид «клавиатуры» с нужными кнопками и действиями и назначить его свойству inputView текстового поля. Тогда система отобразит вашу клавиатуру вместо обычной системной клавиатуры. Представлению клавиатуры (или контроллеру представления) потребуется ссылка на текстовое поле, поэтому для ответа на прикосновения пользователя могут использоваться методы UITextInput.

«Пользовательские представления для ввода данных» в Руководство по программированию текста, Интернета и редактирования для iOS
Ссылка на протокол UITextInput

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

Я не думаю, что это хороший подход, но технически вы можете. Работа не с клавиатурой, а с полями ввода. Я имею в виду, что, например, UITextViewDelegate определяет –textView:shouldChangeTextInRange:replacementText: метод. Когда пользователь пытается изменить текст в UITextView, будет вызван этот метод. Затем вы можете изменить текст вручную и вернуть NO, чтобы игнорировать ввод пользователя.

В приведенном ниже примере, когда пользователь вводит '0', вместо него будет добавлено 'G' (чтобы проиллюстрировать мою идею).

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
    NSString *correctReplacement = [text stringByReplacingOccurrencesOfString:@"0" withString:@"G"];
    textView.text = [textView.text stringByAppendingString:correctReplacement];
    return NO;
}
...