首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >当UITextField.secureTextEntry更改其值时,Swift获取回调

当UITextField.secureTextEntry更改其值时,Swift获取回调
EN

Stack Overflow用户
提问于 2018-06-29 01:55:42
回答 2查看 206关注 0票数 0

我正在寻找一种方法来获得一个回调或事件时,其中一个UITextFields secureTextEntry改变了值。

我需要它的原因如下。

我对UITextField进行了扩展,使其具有通过secureTextEntry内部的一个按钮来打开和关闭UITextField的功能。在我的一个视图中,我有两个UITextFields,我希望控制第一个UITextField上的secureTextEntry状态的按钮也能更改另一个UITextField上的secureTextEntry。我认为最好的方法是在一个视图控件中获取一个回调,并切换另一个UITextField,但是我找不到一个方法来获取UITextField.secureTextEntry更改的回调。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-29 01:58:12

在自定义UITextfield类中

代码语言:javascript
复制
override var isSecureTextEntry:Bool {
    didSet {
        // do next
    }
}

//

代码语言:javascript
复制
let myTextF = UITextField()
var myObserve:NSKeyValueObservation? 

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from  
     myObserve = myTextF.observe(\.isSecureTextEntry) { [weak self] (textF , change) in
       print("changed")
     }
}
票数 2
EN

Stack Overflow用户

发布于 2018-06-29 04:15:32

另一种解决方案。创建一个协议,该协议将包含在isSecureTextEntry发生更改时用作回调的函数。当函数被触发时,让您的ViewController符合该协议,检查哪个文本字段,并对其他文本字段执行您想要执行的操作

示例代码

CustomTextField.swift

代码语言:javascript
复制
import UIKit
protocol SecureEntryToggleDelagte {
    func didChangedSecureTextEntry(of textField: CustomTextField, isSecure: Bool)
}
class CustomTextField: UITextField {

    override var isSecureTextEntry: Bool{
        didSet{
            secureEntryDelegate?.didChangedSecureTextEntry(of: self, isSecure: isSecureTextEntry)
        }
    }
    var secureEntryDelegate: SecureEntryToggleDelagte?
}

ViewController

代码语言:javascript
复制
import UIKit

class ViewController: UIViewController {
    @IBOutlet weak var textFieldOne: CustomTextField!
    @IBOutlet weak var textFieldTwo: CustomTextField!

    override func viewDidLoad() {
        super.viewDidLoad()
        textFieldOne.secureEntryDelegate = self
        textFieldTwo.secureEntryDelegate = self
    }

    @IBAction func toggleTextFieldOne(_ sender: Any){
        textFieldOne.isSecureTextEntry = !textFieldOne.isSecureTextEntry
    }
    @IBAction func toggleTextFieldTwo(_ sender: Any){
        textFieldTwo.isSecureTextEntry = !textFieldTwo.isSecureTextEntry
    }

}
extension ViewController: SecureEntryToggleDelagte{
    func didChangedSecureTextEntry(of textField: CustomTextField, isSecure: Bool) {
        if textField == textFieldOne{
            print("textFieldOne isSecureTextEntry \(isSecure)")
        }else if textFieldTwo == textFieldTwo{
            print("textFieldTwo isSecureTextEntry \(isSecure)")
        }
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51088930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档