Необходимо отключить клавишу «&» на клавиатуре с цифрами и пунктуацией, поэтому можно ли отключить конкретную клавишу в UIKeyboard?
Отключить определенную клавишу в клавиатуре пользовательского интерфейса
Ответы (3)
Я не думаю, что возможно отключить определенную клавишу (если только это не одна из клавиш действия, такая как клавиша возврата), но если вы используете UITextField, вы можете использовать метод делегата - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
, чтобы увидеть, нажал ли пользователь клавишу & и удалить его из строки
Тебе этого не сделать. Однако ваши варианты:
- создайте свою собственную клавиатуру, не предлагая клавишу «&» (слишком много усилий, IMO)
- Если вы используете
UITextField
, вы можете проверить текст, отправленный пользователем: удалить «&» и/или сообщить пользователю, что использование «&» запрещено (намного проще).
EDIT: вы также можете связать событие UITextField "Editing Changed" с IBAction владельца файла и отфильтровать там "&".
Существует один метод делегата для 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, вам не нужно беспокоиться о его явном вызове.