1

我在我的应用程序中放置了一些文本字段,这些文本字段只允许数字 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 键。

其余的不活跃,如果它们是可见的,那不是问题

我怎么能做到这一点。

任何人都可以帮助我。

提前谢谢你。

4

3 回答 3

4

为此设计了一个键盘:UIKeyboardTypeDecimalPad

于 2011-01-10T05:31:20.183 回答
0

如果您可以将您的应用程序定位到 iOS 4.1 及更高版本,请使用@jtbandes 建议。

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

于 2011-01-17T21:02:22.413 回答
0

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

于 2011-01-19T18:54:07.850 回答