Существует один метод делегата для 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, вам не нужно беспокоиться о его явном вызове.