我的界面中有两个文本字段。 txtUser允许用户输入他们的用户名,txtPass允许用户输入他们的密码。我在viewDidLoad方法中以编程方式分配了标记。我使用这些标签来识别不同的文本字段。问题是textFieldShouldBeginEditing方法只识别txtPass,而忽略txtUser。这两个变量都链接到各自的文本字段,因此不会导致问题。以下是我的代码:
- (void)viewDidLoad{
[super viewDidLoad];
self.txtUser.tag=10;
self.txtPass.tag=20;
}
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
if (textField.tag == 10){
self.btnNext.enabled = YES;
self.btnPrevious.enabled = NO;
}else if(textField.tag == 20){
self.btnNext.enabled = NO;
self.btnPrevious.enabled = YES;
}
return YES;
}
答案 0 :(得分:3)
您是否在任何地方为文本字段设置委托?
self.txtUser.delegate=self;
self.txtPass.delegate=self;
还要确保在视图控制器上实现UITextFieldDelegate。
@interface YourViewController: UIViewController<UITextFieldDelegate>
答案 1 :(得分:0)
我半自信的猜测是您设置了代理,但没有设置代码,因此您认为分配代码的代码无效(将.tag = 10
分配给nil)。
两个字段的传入标记为零(默认值),因此委托代码中的else分支始终在运行。
通过设置插座(或通过在IB中设置标签)进行修复。