0

私はObjective Cを初めて使用するので、これを手伝ってください... インターフェイスビルダーで3つのテキストフィールドを使用しました textfield1入力最初の数字 textfield2入力2番目の数字

そして、合計を計算し、テキストフィールド(ans)が結果を表示する合計というボタンを作成しました

.h ファイル コード

 {
      IBOutlet UITextfield txtfield1;
      IBOutlet UITextfield txtfield2;
      IBOutlet UITextfield ans;
 }
 -(IBAction)add;

.m ファイル コード

 -(IBAction)add
  {
      int result=[txtfield1.text intValue]+[txtfield2.text intValue];
      ans.text=[NSString StringWithFormat:@"%d",result];
  }

プログラムは正常に実行されますが、テキストフィールドに整数値のみを入力したいのですが、アルファベットを入力して合計ボタンをクリックすると、ANSとして0が得られます。ユーザーがアルファベットを入力したときにエラーが発生するようにするにはどうすればよいですか。 。ありがとう..

4

4 に答える 4

1

これを行う最善の方法は、キーボードを数値のみに変更することです。Interface Builder から直接行うことができます。UITextField プロパティに移動すると、テキストフィールドの下部近くにキーボード オプションが表示されます。数値に変更します。パッド

于 2012-04-10T18:13:22.587 に答える
1

コントローラーに 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.
}

これで仕事がはかどります。

于 2012-04-10T18:19:35.300 に答える
0

NSTextFieldCell次のように、サブクラス (または iOS に適したもの。以下のコードは純粋な Cocoa に対して 100% 有効です) を作成します。

インターフェース

#import <AppKit/AppKit.h>

@interface decimalCell : NSTextFieldCell

@end

実装

#import "decimalCell.h"
#import "NumberFormatter.h"

@implementation decimalCell

- (id)init
{
    self = [super init];
    if (self) {
        // Initialization code here.
    }

    return self;
}

- (void) awakeFromNib{

    NumberFormatter *formatter = [NumberFormatter withAllowedCharacters:@"0123456789"];
    [self setFormatter:formatter];

}

@end
于 2012-04-10T18:11:56.403 に答える
0

-textField:shouldChangeCharactersInRange:replacementString:特定の文字のみをテキスト フィールドに入れることを許可するデリゲート メソッドです。

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

これは YES を返すため、decimalDigitCharacterSet 文字セットにない文字のみを許可します。

于 2012-04-10T18:51:03.787 に答える