如何从 UI 文本字段中获取数字?
Posted
技术标签:
【中文标题】如何从 UI 文本字段中获取数字?【英文标题】:How to obtain numbers from a UI Textfield? 【发布时间】:2014-12-13 02:02:49 【问题描述】:我正在创建一个应用程序,用户将在其中输入汽车的速度在两个textFields
,按button
,应用程序会告诉你哪辆车更快。我知道为此,您需要使用NSNumberFormatter
,但我是否将代码放在一个单独的方法中,该方法比较数字并在单击按钮时调用它?
【问题讨论】:
您是否将UITextField
限制为只有整数值?
【参考方案1】:
首先,您应该将UITextField
s 限制为仅限十进制值。同样参考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 文本字段中获取数字?的主要内容,如果未能解决你的问题,请参考以下文章
如何在stackview文本字段中快速获取otp的动态数字键盘中的数字