Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/98.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 检查UITextfield是否处于活动状态_Ios_Swift_Uibutton_Uitextfield - Fatal编程技术网

Ios 检查UITextfield是否处于活动状态

Ios 检查UITextfield是否处于活动状态,ios,swift,uibutton,uitextfield,Ios,Swift,Uibutton,Uitextfield,问题是,“眼睛按钮”只应在选择文本字段时显示。我用“isFirstResponder”试过,但似乎不起作用。你知道怎么处理吗?在下面的图片中,未选择文本字段 更新 委托函数“密码已更改”工作正常。我唯一需要的是,如果不再选择textfield,按钮应该隐藏。添加委托函数“beging”或“endEditing”不起作用。它只会导致另一个失败,如果用户键入内容,取消选择文本字段并再次选择它,文本将被删除 @IBAction func passwordDidChange(_ sender: Any)

问题是,“眼睛按钮”只应在选择文本字段时显示。我用“isFirstResponder”试过,但似乎不起作用。你知道怎么处理吗?在下面的图片中,未选择文本字段

更新

委托函数“密码已更改”工作正常。我唯一需要的是,如果不再选择textfield,按钮应该隐藏。添加委托函数“beging”或“endEditing”不起作用。它只会导致另一个失败,如果用户键入内容,取消选择文本字段并再次选择它,文本将被删除

@IBAction func passwordDidChange(_ sender: Any) {
    if self.passwordTextField.text == "" && self.passwordTextField.isFirstResponder != true{
        self.eyeOpenButton.isHidden = true
    }else {
        self.eyeOpenButton.isHidden = false
    }

你可以试试这样的东西

class ViewController: UIViewController, UITextFieldDelegate {

    @IBOutlet weak var passwordTextField: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()
        self.eyeOpenButton.isHidden = true
        passwordTextField.delegate = self
    }

    // calls when textfield becomes 1st responder
    func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
        switch textField {
        case passwordTextField:

            if passwordTextField.text != "" {
                self.eyeOpenButton.isHidden = !self.eyeOpenButton.isHidden
            } else {
                self.eyeOpenButton.isHidden = !self.eyeOpenButton.isHidden
            }

            break
        default:
            break
        }
        return true
    }

    //Calls when the text fields resigns first responder
    func textFieldShouldEndEditing(_ textField: UITextField) -> Bool {

        if textField == passwordTextField {
            if passwordTextField.text != "" {
                self.eyeOpenButton.isHidden = !self.eyeOpenButton.isHidden
            } else {
                self.eyeOpenButton.isHidden = !self.eyeOpenButton.isHidden
            }
        }
        return true
    }

    // Check all the input user has with the keyboard.
    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
        if let passwordTextField = passwordTextField {

            if passwordTextField.text?.count ?? 0 > 0 {
                self.eyeOpenButton.isHidden = !self.eyeOpenButton.isHidden
            }

            if passwordTextField.text?.count == 0 {
                 self.eyeOpenButton.isHidden = !self.eyeOpenButton.isHidden
            }
        }

        return true
    }

    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        for textField in self.view.subviews where textField is UITextField {
            textField.resignFirstResponder()
        }
        return true
    }
}

你可以试试这样的

class ViewController: UIViewController, UITextFieldDelegate {

    @IBOutlet weak var passwordTextField: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()
        self.eyeOpenButton.isHidden = true
        passwordTextField.delegate = self
    }

    // calls when textfield becomes 1st responder
    func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
        switch textField {
        case passwordTextField:

            if passwordTextField.text != "" {
                self.eyeOpenButton.isHidden = !self.eyeOpenButton.isHidden
            } else {
                self.eyeOpenButton.isHidden = !self.eyeOpenButton.isHidden
            }

            break
        default:
            break
        }
        return true
    }

    //Calls when the text fields resigns first responder
    func textFieldShouldEndEditing(_ textField: UITextField) -> Bool {

        if textField == passwordTextField {
            if passwordTextField.text != "" {
                self.eyeOpenButton.isHidden = !self.eyeOpenButton.isHidden
            } else {
                self.eyeOpenButton.isHidden = !self.eyeOpenButton.isHidden
            }
        }
        return true
    }

    // Check all the input user has with the keyboard.
    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
        if let passwordTextField = passwordTextField {

            if passwordTextField.text?.count ?? 0 > 0 {
                self.eyeOpenButton.isHidden = !self.eyeOpenButton.isHidden
            }

            if passwordTextField.text?.count == 0 {
                 self.eyeOpenButton.isHidden = !self.eyeOpenButton.isHidden
            }
        }

        return true
    }

    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        for textField in self.view.subviews where textField is UITextField {
            textField.resignFirstResponder()
        }
        return true
    }
}


您需要在
UITextfieldDelegate
方法中处理此问题。实施这些方法,听取更改并相应地采取行动。

您需要在
UITextfieldDelegate
方法中处理此问题。执行这些方法,听取更改并相应地采取行动。

您可能想要更改它,并在
textfieldDiBeginediting
delegate Method中检查它。如何将按钮指定为textField的
rightView
,并在编辑时将其
rightViewMode
设置为
,但其中只有一个按钮以某种方式显示出来。“vergessen”按钮或“eye”按钮。您可能需要更改它并在
textfieldDiBeginediting
delegate方法中检查它。将按钮指定为文本字段的
rightView
,并在编辑时将其
rightViewMode
设置为
如何?之前尝试过,但其中只有一个按钮以某种方式显示出来。“vergessen”按钮或“eye”按钮。我已经尝试过了,但是如果我输入了一些东西,并且在AppDelegate类中得到了这个错误,应用程序就会崩溃:线程1:signal SIGABRTok我修复了这个错误。但你的解决方案并不适合这份工作。按钮仍然存在,但现在如果我结束编辑并再次开始编辑,文本字段中的文本将被删除:Dyou需要执行类似于
self.eyeOpenButton.ishiden=!self.eyeOpenButton.ishiden
在哪里?在每个委托函数中?也不起作用。我尝试过这个方法,但是如果我输入了一些东西,并且在我的AppDelegate类中得到了这个错误,应用程序就会崩溃:线程1:signal SIGABRTok我修复了这个错误。但你的解决方案并不适合这份工作。按钮仍然存在,但现在如果我结束编辑并再次开始编辑,文本字段中的文本将被删除:Dyou需要执行类似于
self.eyeOpenButton.ishiden=!self.eyeOpenButton.ishiden
在哪里?在每个委托函数中?也不起作用。