Отключить определенную клавишу в клавиатуре пользовательского интерфейса - PullRequest
0 голосов
/ 07 сентября 2011

Требуется отключить клавишу «&» на клавиатуре с цифрами и пунктуацией, поэтому возможно ли отключить определенную клавишу на UIKeyboard?

Ответы [ 5 ]

3 голосов
/ 07 сентября 2011

Я не думаю, что возможно отключить определенный ключ (если это не один из ключей действия, например, ключ возврата), но если вы используете UITextField, вы можете использовать метод делегата - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string, чтобы увидеть, если пользователь нажмите клавишу & и удалите ее из строки

1 голос
/ 07 сентября 2011

Существует один метод делегата для textField, в котором вы можете блокировать определенные символы, если хотите, основываясь на их значениях ASCII.Этот метод можно записать следующим образом:

-(BOOL)keyboardInput:(id)k shouldInsertText:(id)i isMarkedText:(int)b 
{
char s=[i characterAtIndex:0];
  if(selTextField.tag==1)
    {
        if(s>=48 && s<=57 && s == 38)  // 48 to 57 are the numbers and 38 is the '&' symbol
        {
            return YES;
        }
         else
        {
            return NO;
        }

    }
}

Этот метод разрешает вводить только цифры и символ &.Даже если пользователь нажимает другие символы, они не будут введены.И поскольку это метод делегата textField, вам не нужно беспокоиться о его явном вызове.

1 голос
/ 07 сентября 2011

Насколько я знаю, вы не можете напрямую отключить определенные кнопки на UIKeyboard.Я не делал ничего подобного, но я знаю, что вы можете добавить новые кнопки в качестве подпредставления к клавиатуре, так что, возможно, вы можете сделать это и отключить userInteraction для этой определенной кнопки.

Ссылка показывает пример добавления кнопки в качестве подпредставления клавиатуры:

Создание пользовательской UIKeyBoard для iPhone

1 голос
/ 07 сентября 2011

Вы не можете этого сделать.Однако вы можете выбрать следующие варианты:

  • создать свою собственную пользовательскую клавиатуру без клавиши '&' (слишком много усилий IMO)
  • Если вы используете UITextField, вы можете проверить текст, отправленныйuser: удалите '&' и / или сообщите пользователю, что запрещено использовать '&' (намного проще).

EDIT: вы также можете подключить UITextField's "EditingИзменил "событие" на IBAction владельца файла и отфильтровал "&" там.

0 голосов
/ 17 июля 2013
//Disabling the '<' '>' special characters key in Keyboard in my code

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
    NSCharacterSet *nonNumberSet = [NSCharacterSet characterSetWithCharactersInString:@"<>"];
    if (range.length == 1)
        return YES;
    else
        return ([text stringByTrimmingCharactersInSet:nonNumberSet].length > 0);
    return YES;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...