私は obj-c を学んでいて、 2 uitextfields
, label
&を持つアプリを作成するという簡単なタスクを自分自身に与えましたbutton
(ボタンは 2 つの数値を要約し、結果をラベルに表示します)。textfields
このアプリを作成しましたが、「完了」ボタンと「数字のみ」を一緒に操作する方法がわかりません。
以下は私のコードです:
#import UIKit/UIKit.h
@interface ViewController : UIViewController
@property IBOutlet UILabel *label;
@property IBOutlet UITextField *textField1;
@property IBOutlet UITextField *textField2;
@property NSInteger textFieldInt1, textFieldInt2;
@property NSString *textFieldStr1, *textFieldStr2;
-(IBAction)button:(id)sender;
-(IBAction)hideKeyboard:(id)sender;
@end
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
@synthesize label, textField1, textField2, textFieldInt1, textFieldInt2, textFieldStr1, textFieldStr2;
-(IBAction)button:(id)sender {
textFieldInt1=[textField1.text integerValue];
textFieldInt2=[textField2.text integerValue];
label.text=[NSString stringWithFormat: @"%d", textFieldInt1+textFieldInt2];
[self.view endEditing:YES];
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[self.textField1 setReturnKeyType:UIReturnKeyDone];
[self.textField2 setReturnKeyType:UIReturnKeyDone];
}
-(IBAction)hideKeyboard:(id)sender
{
[self.view endEditing:YES];
}
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if(![string intValue] && ![string isEqualToString:@""] && ![string isEqualToString:@"0"])
{
return NO;
} else {
return YES;
}
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
[self.view endEditing:YES];
[super touchesBegan:touches withEvent:event];
}
@end
また、すべてのアウトレット ( 、、 )との両方textFields
に(ストーリーボードで) 接続しました。hideKeyboard (didEndOnExit)
button
button (touchUpInside)
textfields
button
label
問題は、 numbers only
入力が で機能しないことdone
です。delegate
(両方に接続されたストーリーボードの新しい参照アウトレット)を使用すると、入力がtextfields
得られますが、ボタンが機能しません (iPhone でボタンを押しても何も起こりません)。使用しない場合、入力は取得できますが、正常に動作します (押すと iPhone キーボードが非表示になります)。numbers only
textfields
done
delegate
all characters
done
ここで私が間違っているかもしれない提案はありますか?