如何检测uikeyboard类型“UIKeyboardTypeNumbersAndPunctuation”上何时点击“ABC”按钮

时间:2012-01-09 09:10:18

标签: iphone ios ios4 uikeyboard

我想检测何时在uikeyboard类型“UIKeyboardTypeNumbersAndPunctuation”上点击“ABC”按钮,以及我想检测何时在字母键盘类型上点击“123”按钮。

我正在使用“UITextview”控件

请允许我,谢谢你

3 个答案:

答案 0 :(得分:1)

据我所知,你不想替换想要检测的数字是按下了以下按钮?

iOS email keyboard

如果是这样,据我所知,这是不正式的。 Apple不提供“UIKeyboardTypeDidChange”通知,并且您无法在遵守指南的情况下编辑/更改键盘视图。如果你尝试过,你的申请可能会被拒绝。

(这并不是说如果你在键盘视图中砍掉它就不可能。)

答案 1 :(得分:1)

- 此代码仅允许textview

中的数字

如果您的目标是iOS 4.1及更高版本,则可以使用UIKeyboardTypeDecimalPad。如果您需要支持旧版本,需要小数点,并且不需要任何其他内容,则必须创建自定义键盘。

如果要在不删除其他键的情况下过滤掉其他键,请将某个对象指定为文本字段的委托。该对象应包含以下代码:

    - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{
       NSCharacterSet *nonNumberSet = [[NSCharacterSet characterSetWithCharactersInString:@"0123456789."] invertedSet];
    return([text stringByTrimmingCharactersInSet:nonNumberSet].length > 0)
    //or
     NSRange location = [string rangeOfCharacterFromSet:nonNumberSet];
        return (location.location == NSNotFound);
    }

对于字母和其他你使用上面代码的代码^ [0-9a-zA-Z]。我认为它对你有用。有一个感恩节

答案 2 :(得分:-1)

use - (void)textViewDidChange:(UITextView *)textView的textView委托协议。这应该可以解决你的问题。