Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 使用textfield添加两个数字_Objective C_Ios_Cocoa_Uitextfield_Nsnumberformatter - Fatal编程技术网

Objective c 使用textfield添加两个数字

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

我对目标c还不熟悉,所以请让我帮你。。。 我在界面生成器中使用了三个文本字段 textfield1输入第一个数字 textfield2输入第二个数字

我已经创建了一个名为sum的按钮,它将计算总和 文本字段(ans)将显示结果

.h文件代码

 {
      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
以允许退格。