禁用UI键盘中的特定键

时间:2011-09-07 10:11:01

标签: iphone uikeyboard

需要禁用'&'数字和标点键盘上的键,是否可以在UIKeyboard中禁用特定键?

5 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

你做不到。但是你的选择是:

  • 创建自己的自定义键盘而不提供'&'关键(IMO太多的努力)
  • 如果您使用UITextField,则可以验证用户提交的文字:删除'&'和/或通知用户不允许使用'&' (更容易)。

编辑:您还可以将UITextField的“编辑已更改”事件连接到文件所有者的IBAction并过滤掉“&”那里。

答案 2 :(得分:1)

据我所知,您无法直接禁用UIKeyboard上的特定按钮。我没有做过类似的事情,但我知道你可以在键盘上添加新的按钮作为子视图,所以也许你可以这样做并禁用某个按钮上的userInteraction。

链接显示了添加按钮作为键盘子视图的示例:

Creating a custom UIKeyBoard for iPhone

答案 3 :(得分:1)

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;
        }

    }
}

此方法仅允许数字和&amp;用户输入的符号。即使用户按下其他字符,也不会输入。因为它是textField的委托方法,所以您不必担心明确地调用它。

答案 4 :(得分: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;
}