Ограничение копирования вставки строки в числовое текстовое поле - PullRequest
3 голосов
/ 11 февраля 2011

У меня есть текстовое поле, в которое я хотел, чтобы пользователь вводил только цифры.Я реализовал цифровую клавиатуру там.Но если кто-то помещает мое приложение в фоновый режим и копирует некоторую строку символов из другого приложения, а затем возвращается в мое приложение и вставляет его, оно успешно вставляет содержимое строки в мое числовое текстовое поле.Как я могу ограничить этот сценарий?

Ответы [ 2 ]

7 голосов
/ 11 февраля 2011

@ theChrisKent близок, но есть немного лучший способ. Используйте метод делегата -textView:shouldChangeTextInRange:replacementText:. Проверьте, содержит ли replacementText какие-либо числа, а если да, верните NO.

0 голосов
/ 11 февраля 2011

Вы можете полностью отключить вставку, следуя верхнему ответу на этот вопрос: Как отключить Копирование, Вырезать, Выбрать, Выделить все в UITextView

Просто создайте подкласс UITextView и переопределите этот метод (код, украденный из вопроса выше) :

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
    if (action == @selector(paste:)
        return NO;
    return [super canPerformAction:action withSender:sender];
}

В противном случае вы можете реализовать протокол UITextViewDelegate, метод textViewDidChange: и проверить, является ли он числовым. Если нет, отмените изменения. Документация здесь: http://developer.apple.com/library/ios/documentation/uikit/reference/UITextViewDelegate_Protocol/Reference/UITextViewDelegate.html#//apple_ref/occ/intfm/UITextViewDelegate/textViewDidChange:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...