检测UITextField的焦点更改

时间:2012-05-20 07:47:05

标签: iphone ios ios5 uitextfield xcode4.3

我正在尝试设置视图的动画,以便在键盘隐藏并显示文本字段时向上移动,我让它完美地工作,但是当焦点从一个文本字段移动到另一个文本字段时,它不会键盘已经显示,因此无法正常工作。

在viewDidLoad中,我注册了以下内容:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];

然后在keyboardWillShow和keyboardWillHide方法中,它确定视图是否应该移动并相应地设置动画。但是,如果已经显示了键盘并且用户单击了需要视图向上移动的另一个文本字段,则不会调用该方法。当键盘已经显示时,有没有办法检测焦点是否已更改为另一个文本字段?如果有一种方法可以做到这一点,而不必将所有文本字段设置为委托,那将是很好的。

提前致谢。

4 个答案:

答案 0 :(得分:67)

使用UITextField委托方法..在你的情况下比键盘方法更好..当textField获得焦点时,- (void)textFieldDidBeginEditing:(UITextField *)textField;将被触发..当它失去焦点时- (void)textFieldDidEndEditing:(UITextField *)textField;将被解雇。

答案 1 :(得分:8)

-(BOOL)textFieldShouldBeginEditing:(UITextField*)textField {
if (textField.tag == 1) { //first textField tag
    //textField 1
}
else {
   //textField 2
}
}

答案 2 :(得分:4)

使用UITextFieldDelegate

func textFieldDidBeginEditing(textField: UITextField) {
        println("did")
        if textField.tag == 1{
            self.txtFullName.layer.borderColor = UIColor.blueColor().CGColor
        }
    }

答案 3 :(得分:2)

快速4:

  1. $placeholders应用于您的UITextFieldDelegate
  2. 为您要重点关注的ViewController添加插座
  3. 实现功能textFields(如果您希望收到有关该特定操作的通知,请参见Apple's documentation)并用您的代码填充
  4. textFieldDidBeginEditing上,将您的viewDidLoad()类分配为您先前在步骤2中添加的ViewController的委托

它必须类似于:

textField