Iphone UITextField 只有整数

标签 iphone objective-c casting

我的 IB 中有一个 UITextField,我想检查用户是否只输入了数字(无字符)并获取整数值。

我这样得到 UITextField 的整数值:

int integer = [myUITexrtField.text intValue];

当我输入一个字符 ( , ; . ) 时,它返回 0 并且我不知道如何检测它不仅仅是数字。

我该怎么办?

最佳答案

如下实现 shouldChangeCharactersInRange 方法不允许用户输入非数字字符。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
    NSCharacterSet *nonNumberSet = [[NSCharacterSet decimalDigitCharacterSet] invertedSet];
    return ([string stringByTrimmingCharactersInSet:nonNumberSet].length > 0) || [string isEqualToString:@""];
}

如果字符串是数字,则返回 YES,否则返回 NO。 [string isEqualToString@""] 是支持退格键删除。

我喜欢这种方法,因为它很干净。

关于Iphone UITextField 只有整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2719680/

相关文章:

iphone - Objective-C:如何覆盖/替换库中的类

iphone - 呈现新 Controller 时取消所有模态转换

casting - 如何在 TypeScript 中实现既可调用又具有属性的接口(interface)?

ios - 已经创建的带有标签的 UIViews 变为 NULL

iphone - 移动 Safari (iphone) 水平转动时不放大

iphone - 从文件中加载文本

iOS:AFNetworking 多重下载。请求操作超时

iphone - cocos2d 2.x 场景 retainCount

c++ - 从 size_t 转换为 char 及周围

c - 将 int 数组转换为 short* 时,为什么为元素赋值会覆盖整个整数?