如何从 UI 文本字段中获取数字?

Posted

技术标签:

【中文标题】如何从 UI 文本字段中获取数字?【英文标题】:How to obtain numbers from a UI Textfield? 【发布时间】:2014-12-13 02:02:49 【问题描述】:

我正在创建一个应用程序,用户将在其中输入汽车的速度在两个textFields,按button,应用程序会告诉你哪辆车更快。我知道为此,您需要使用NSNumberFormatter,但我是否将代码放在一个单独的方法中,该方法比较数字并在单击按钮时调用它?

【问题讨论】:

您是否将UITextField 限制为只有整数值? 【参考方案1】:

首先,您应该将UITextFields 限制为仅限十进制值。同样参考THIS。

然后您可以执行以下操作:

-(IBAction)fasterCar:(id)sender 

    int result = [self.txtField1.text intValue]; - [self.txtField1.text intValue];

    if (result > 0)              
         NSLog(@"1st one is faster");
    else if (result < 0)         
         NSLog(@"2nd one is faster);
    else                         
         NSLog(@"Both cars have equal speed");

可能看起来很老派,效果很好。

【讨论】:

我喜欢老式的方法,但我仍然遇到错误。我将标签声明为 - (IBAction)carSpeed1:(id)sender; - (IBAction)carSpeed2:(id)sender;我也需要为这些写论据吗? 你指定的那两个根本不是标签......它们是IBActions。 但您不需要将标签连接到 IBAction 以便文本更改吗?【参考方案2】:

试试:

NSDecimal *scannerValue = [NSDecimalNumber zero];
[[NSScanner scannerWithString:[textFieldInstance stringValue]] scanDecimal:scannerValue];
if ([scannerValue decimalValue] != [NSDecimalNumber zero])  // got a number
 else  // not a number

可用的方法记录在here 中,并带有指向类层次结构的链接。如果您需要进一步的帮助,请发表评论。

【讨论】:

嗯,使用它而不是使用NSCharacterSet 来验证文本是否为数字然后使用floatValue 有什么好处?【参考方案3】:

在下面的按钮操作方法中尝试这样:-

-(IBAction)calculateSpeed:(id)sender

    NSDecimalNumber *first=[NSDecimalNumber decimalNumberWithString:self.txt.text];
    NSDecimalNumber *second=[NSDecimalNumber decimalNumberWithString:self.txt2.text];
    (second > first) ? NSLog(@"Mclaren is faster") : NSLog(@"BMW is faster");

【讨论】:

以上是关于如何从 UI 文本字段中获取数字?的主要内容,如果未能解决你的问题,请参考以下文章

python怎么从一堆数据中取数

如何从 Material UI 文本字段中查看密码?

如何在stackview文本字段中快速获取otp的动态数字键盘中的数字

无法从 PyQT5 文本字段中获取文本

如何在swift ui watch os中的同一屏幕中添加键盘和文本字段[关闭]

只要按下键盘上的x按钮,如何从一个文本字段中删除值