我正在寻找一种方法来获得一个回调或事件时,其中一个UITextFields secureTextEntry改变了值。
我需要它的原因如下。
我对UITextField进行了扩展,使其具有通过secureTextEntry内部的一个按钮来打开和关闭UITextField的功能。在我的一个视图中,我有两个UITextFields,我希望控制第一个UITextField上的secureTextEntry状态的按钮也能更改另一个UITextField上的secureTextEntry。我认为最好的方法是在一个视图控件中获取一个回调,并切换另一个UITextField,但是我找不到一个方法来获取UITextField.secureTextEntry更改的回调。
发布于 2018-06-29 01:58:12
在自定义UITextfield
类中
override var isSecureTextEntry:Bool {
didSet {
// do next
}
}
//
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")
}
}
发布于 2018-06-29 04:15:32
另一种解决方案。创建一个协议,该协议将包含在isSecureTextEntry发生更改时用作回调的函数。当函数被触发时,让您的ViewController符合该协议,检查哪个文本字段,并对其他文本字段执行您想要执行的操作
示例代码
CustomTextField.swift
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
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)")
}
}
}
https://stackoverflow.com/questions/51088930
复制相似问题