Как определить, когда кнопка «ABC» нажата на клавиатуре uikeyboard типа «UIKeyboardTypeNumbersAndPunctuation» - PullRequest
4 голосов
/ 09 января 2012

Я хочу определить, когда нажата кнопка «ABC» на клавиатуре типа «UIKeyboardTypeNumbersAndPunctuation», а также определить, когда нажата кнопка «123» на клавиатуре алфавитного типа.

У меня есть элемент управления "UITextview"

Пожалуйста, позвольте мне и спасибо

Ответы [ 3 ]

1 голос
/ 09 января 2012

- этот код допускает только цифры в текстовом представлении

Если вы ориентируетесь на iOS 4.1 и более поздние версии, вы можете использовать UIKeyboardTypeDecimalPad. Если вам требуется поддержка более старых версий, требуется десятичная точка и больше ничего не нужно, вам придется создать собственную клавиатуру.

Если вы хотите отфильтровать другие ключи, не удаляя их, назначьте некоторый объект в качестве делегата текстового поля. Этот объект должен содержать следующий код:

    - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{
       NSCharacterSet *nonNumberSet = [[NSCharacterSet characterSetWithCharactersInString:@"0123456789."] invertedSet];
    return([text stringByTrimmingCharactersInSet:nonNumberSet].length > 0)
    //or
     NSRange location = [string rangeOfCharacterFromSet:nonNumberSet];
        return (location.location == NSNotFound);
    }

для алфавита и других, которые вы используете выше код с этим, как код ^ [0-9a-zA-Z]. Я думаю, что это полезно для вас. хорошего дня

1 голос
/ 09 января 2012

Насколько я могу сказать, вы не хотите заменять числа, которые хотите обнаружить, нажата следующая кнопка?

iOS email keyboard

Если так, насколько я знаю, это официально невозможно. Apple не предоставляет уведомления «UIKeyboardTypeDidChange», и вы не можете редактировать / изменять вид клавиатуры, оставаясь в рамках рекомендаций. Скорее всего, ваша заявка будет отклонена, если вы попытаетесь.

(Нельзя сказать, что это было бы невозможно, если бы вы взломали представление с клавиатуры).

0 голосов
/ 09 января 2012

use - (void) textViewDidChange: (UITextView *) textView протокола делегирования textView. Это должно решить вашу проблему.

...