如何通过按ABC键来阻止将键盘数字更改为字母

时间:2011-01-10 05:27:56

标签: iphone iphone-softkeyboard

我在我的应用中放置了一些文本字段,这些文本字段只允许数字0,1..9和.symbol。

为此,我的代码是

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

    static NSCharacterSet *charSet = nil;
    if(!charSet) {
        charSet = [[[NSCharacterSet characterSetWithCharactersInString:@"0123456789."] invertedSet] retain];
    }
    NSRange location = [string rangeOfCharacterFromSet:charSet];
    return (location.location == NSNotFound);
}

一切正常,

但是当我按下ABC& #+ =按钮键盘更改为其他类型。

我需要防止这种情况,用户只能使用数字和。,X键。

如果其他人看不到问题

,则其他人不活跃

我怎么能这样做

任何人都可以帮助我。

提前感谢你。

3 个答案:

答案 0 :(得分:4)

为此设计了一个键盘:UIKeyboardTypeDecimalPad

答案 1 :(得分:0)

如果您可以针对iOS 4.1及更高版本定位应用,请使用@jtbandes建议。

在iPhone SDK中使用内置键盘类型的主要优点是它们支持国际化。如果您不需要字母,只需要数字,我建议您只使用所需的键从UIButton构建自定义键盘。保持键盘不显示(textFieldShouldBeginEditing上的resignFirstResponder)。您可以在“com.apple.UIKit”包中播放“Tock.aiff”,使其看起来真实。

答案 2 :(得分:0)

如果您需要支持4.1之前的操作系统版本,您可以执行App Cubby在其某些应用中所做的操作(例如Gas Cubby) - 他们使用数字键盘键盘(UIKeyboardTypeNumberPad)并覆盖包含左下角点的UIButton。键盘处理0-9输入,点按钮的动作配置为附加'。'到当前的字符串值。