检测UITextField的焦点更改

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了检测UITextField的焦点更改相关的知识,希望对你有一定的参考价值。

我正在尝试设置视图的动画,当键盘隐藏并显示为文本字段时向上移动,我让它完美地工作,但是当焦点从一个文本字段移动到另一个文本字段时,它不起作用因为键盘已经显示出来了。

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

提前致谢。

答案

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

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

使用UITextFieldDelegate

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

在快速4:

  1. UITextFieldDelegate实施到你的ViewController课程中
  2. 为要检测焦点的textFields添加Outlets
  3. 实现函数textFieldDidBeginEditing(如果您希望收到有关该特定操作的通知,请参阅Apple's documentation)并填写代码
  4. viewDidLoad()上指定你的ViewController类作为你之前在第2步中添加的textField的代表

它必须类似于:

class ViewController: UIViewController, UITextFieldDelegate {
    @IBOutlet weak var yourTextField: UITextField!

    func textFieldDidBeginEditing(_ textField: UITextField) {
        // Your code here
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        yourTextField.delegate = self
    }

    ...

}

以上是关于检测UITextField的焦点更改的主要内容,如果未能解决你的问题,请参考以下文章

当 UITextField 获得焦点时,从 UITableViewCell 继承类中更改 UITableViewCell 的高度

在UITextfield中输入文本后以编程方式更改焦点

输入 SwiftUI 后更改文本字段的焦点

如何从视图中检测对 BindableObjects 的更改?

编辑开始时更改 UITextField 背景

在不使用委托方法的情况下检测 UITextView 和/或 UITextField 上的 SELECTION 更改