我已经搜索并看到了很多关于 textFieldShouldReturn 方法的答案。其中一半已经过时,有些在不同的情况下工作,有些没有得到彻底的解释。我不确定完成这项任务的最佳方法是什么,它有效,但我认为可能有更简单的方法来完成它。
到目前为止,这是我的代码:
在头文件上:
@interface ClassName : SomeUIViewController <UITextFieldDelegate>
在实现文件中:
@interface ClassName()
@property (weak, nonatomic) IBOutlet UITextField *firstOne;
@property (weak, nonatomic) IBOutlet UITextField *secondOne;
@property (weak, nonatomic) IBOutlet UITextField *thirdOne;
@property (weak, nonatomic) IBOutlet UITextField *fourthOne;
@property (weak, nonatomic) IBOutlet UITextField *fifthOne;
@end
-(void)viewDidLoad{
self.firstOne.delegate = self;
self.secondOne.delegate = self;
self.thirdOne.delegate = self;
self.fourthOne.delegate = self;
self.fifthOne.delegate = self;
}
-(BOOL)textFieldShouldReturn:(UITextField*)textField;
{
if (textField == self.firstOne) {
[textField resignFirstResponder];
[self.secondOne becomeFirstResponder];
} else if (textField == self.secondOne) {
[textField resignFirstResponder];
[self.thirdOne becomeFirstResponder];
} else if (textField == self.thirdOne) {
[textField resignFirstResponder];
[self.fourthOne becomeFirstResponder];
} else if (textField == self.fourthOne) {
[textField resignFirstResponder];
[self.fifthOne becomeFirstResponder];
} else if (textField == self.fifthOne) {
[textField resignFirstResponder];
}
return NO;
}
那么这是正确的还是有更好的方法来完成这项任务?
最佳答案
一般来说,你的代码很好。
如果您使用的是 IB (Interface Builder),则可以在此处设置委托(delegate),而不是在代码中。
示例:控件从 UITextField 拖动到 ViewController 并选择“委托(delegate)”。
resignFirstResponder 可以考虑到 ibe 的发生
重构代码:
-(BOOL)textFieldShouldReturn:(UITextField*)textField;
{
[textField resignFirstResponder];
if (textField == self.firstOne) {
[self.secondOne becomeFirstResponder];
} else if (textField == self.secondOne) {
[self.thirdOne becomeFirstResponder];
} else if (textField == self.thirdOne) {
[self.fourthOne becomeFirstResponder];
} else if (textField == self.fourthOne) {
[self.fifthOne becomeFirstResponder];
}
return NO;
}
关于ios - 文本字段应该返回,这对 ios7 是否正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21687778/