ios - 文本字段应该返回,这对 ios7 是否正确?

标签 ios xcode ios7 delegates uitextfield

我已经搜索并看到了很多关于 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)”。
enter image description here

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/

相关文章:

Objective-C 访问 block 内的属性

ios - Xcode 6 : Build hangs and Interface Builder Cocoa Touch Tool starts allocating all RAM

xcode - 在 Swift 中创建我自己的布局系统而不是在 XCode 中使用自动布局?

ios - 如何在不重置 SCNNode 位置的情况下重置 SCNNode 的 SCNPhysicsBody?

ios - 尝试从 UISlider 和文本标签中删除小数

iphone - RightBarButtonItem 大写文本?

ios - Foundation -[NSConcreteMapTable 分配 :key:value:isNew:] Crashed: com. apple.main-thread EXC_BAD_ACCESS KERN_INVALID_ADDRESS at

ios - 应用程序启动后 iPad 应用程序界面方向发生变化

javascript - IOS7 innerWidth & Co. 疯了吗?

ios - 选择时自定义 UITableViewCell 更改?