textFieldDidBeginEditing:用于多个文本字段

Vik*_*Vik 10 iphone cocoa-touch uitextfield

我对iphone编程很新,在这里我遇到了一些问题.现在在我的应用程序中,我有两个文本字段,我想在第二个文本字段开始编辑时触发事件.现在我正在使用以下功能

- (void)textFieldDidBeginEditing:(UITextField *)textField

但事情是当第一个文本字段开始编辑时事件被触发.它不等待第二个文本字段.有没有什么办法可以将这个函数用于第二个文本字段,或者可能以某种方式知道并传递活动文本字段的值?

我尝试在函数中编写textfield的名称而不是(UITextField*)textField但仍然是相同的结果.

sud*_*-rf 26

如果我是你,我会将第二个标记(在Interface Builder中)设置textField为2或类似的东西.然后你可以这样做:

-(void)textFieldDidBeginEditing:(UITextField *)textField {     
    if (textField.tag == 2) {
        //this is textfield 2, so call your method here
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:请执行此操作以查看是否甚至调用该方法:

-(void)textFieldDidBeginEditing:(UITextField *)textField {     
    NSLog(@"The method was called");
}
Run Code Online (Sandbox Code Playgroud)

对于Swift 2.2

func textFieldDidBeginEditing(textField: UITextField) {
    if textField.tag == 2 {
        //this is textfield 2, so call your method here
    }
}
Run Code Online (Sandbox Code Playgroud)


Fra*_*ano 16

每次编辑任何文本字段时,都会调用该委托方法,因此应该控制在发生这种情况时执行的操作.我建议你做一些事情:

   -(void)textFieldDidBeginEditing: (UITextField *)textField
   {     
        if (textField == mySecondTextField)
        {
            //Do what you need
        }
        else
        {
            //Do nothing
        }
   }
Run Code Online (Sandbox Code Playgroud)

我希望它对你有所帮助!