Objective c 使用textfield添加两个数字
我对目标c还不熟悉,所以请让我帮你。。。 我在界面生成器中使用了三个文本字段 textfield1输入第一个数字 textfield2输入第二个数字 我已经创建了一个名为sum的按钮,它将计算总和 文本字段(ans)将显示结果 .h文件代码Objective c 使用textfield添加两个数字,objective-c,ios,cocoa,uitextfield,nsnumberformatter,Objective C,Ios,Cocoa,Uitextfield,Nsnumberformatter,我对目标c还不熟悉,所以请让我帮你。。。 我在界面生成器中使用了三个文本字段 textfield1输入第一个数字 textfield2输入第二个数字 我已经创建了一个名为sum的按钮,它将计算总和 文本字段(ans)将显示结果 .h文件代码 { IBOutlet UITextfield txtfield1; IBOutlet UITextfield txtfield2; IBOutlet UITextfield ans; } -(IBAction)add
{
IBOutlet UITextfield txtfield1;
IBOutlet UITextfield txtfield2;
IBOutlet UITextfield ans;
}
-(IBAction)add;
-(IBAction)add
{
int result=[txtfield1.text intValue]+[txtfield2.text intValue];
ans.text=[NSString StringWithFormat:@"%d",result];
}
.m文件代码
{
IBOutlet UITextfield txtfield1;
IBOutlet UITextfield txtfield2;
IBOutlet UITextfield ans;
}
-(IBAction)add;
-(IBAction)add
{
int result=[txtfield1.text intValue]+[txtfield2.text intValue];
ans.text=[NSString StringWithFormat:@"%d",result];
}
该程序运行良好,但我只希望在文本字段中输入整数值,如果我输入字母并单击“求和”按钮,我得到0作为ans,我该怎么做才能让用户在输入字母时出错..谢谢 创建一个
NSTextFieldCell
子类(或适用于iOS的子类;下面的代码对纯可可100%有效),如下所示:
接口
#import <AppKit/AppKit.h>
@interface decimalCell : NSTextFieldCell
@end
最好的方法是将键盘更改为仅数字,您可以从界面生成器直接执行此操作,转到UITextField属性,在textfield底部附近,您将看到选项键盘,将其更改为:数字键盘您必须实现UITextFieldDelegate方法[textFieldShouldReturn:]在你的控制器里
-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
NSDecimalNumber *n = [NSDecimalNumber decimalNumberWithString:textField.text];
if( [n notANumber] ) {
// This means the user entered an invalid number;
return NO;
}
return YES; // Do something with the number it is valid.
}
这将完成任务。
-textField:shouldChangeCharactersRange:replacementString:
是一种委托方法,允许您只允许某些字符出现在文本字段中
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSCharacterSet *nonNumberSet = [[NSCharacterSet decimalDigitCharacterSet] invertedSet];
return ([string stringByTrimmingCharactersInSet:nonNumberSet].length > 0);
}
这将返回YES,因此只允许在小数位数字符集中而不是的字符。谢谢我实现了你的方法,但我不能使用backspace为什么?这是因为它试图用'nothing'替换特定范围内的字符,而'nothing'不是数字。尝试检查
[replacementString isEqual:@”“]
并返回YES
以允许退格。