2011-09-07 69 views

回答

2

我不认为有可能禁用某个键(除非它是诸如返回键之类的操作键之一),但如果您使用的是UITextField,则可以使用- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string委托方法来查看用户是否按下了&键并将其从字符串中删除

1

您不能这样做。但是你的选择是:

  • 如果使用UITextField可以验证提交的用户文本创建不offerring“&”键,自定义的键盘(太多精力IMO)
  • :删除“&”和/或通知用户不允许使用'&'(更容易)。

编辑:你也可以的UITextField的“编辑而改变”事件连接到文件的所有者的IBAction为,并筛选出“&”在那里。

+0

+1感谢您的回应。:) – rptwsthi

1

据我所知,你不能直接禁用UIKeyboard上的特定按钮。我没有做过这样的事情,但我知道你可以添加新的按钮作为子视图到键盘,所以也许你可以做到这一点,并禁用该特定按钮上的userInteraction。

链接显示添加一个按钮的键盘子视图的例子:

Creating a custom UIKeyBoard for iPhone

1

没有为文本框一个委托方法,其中,如果你根据自己的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的委托方法,所以您不必担心显式调用它。

+0

+1为伟大的解决方案,这将有助于许多人。 – rptwsthi

0
//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; 
} 
+0

尝试代替'&'代替'&',它会起作用 – balajiaj