在 XCode 6.3.2
中,我有一个 UITextField:
@IBOutlet weak var uiswitchControlledTextField: UITextField!
我现在使用 UISwitch(名为 mySwitch
)通过以下方式控制其启用或禁用状态:
@IBOutlet weak var mySwitch: UISwitch!
mySwitch.addTarget(self, action: Selector("stateChanged:"), forControlEvents: UIControlEvents.ValueChanged)
//callback below:
func stateChanged(switchState: UISwitch) {
uiswitchControlledTextField.enabled = switchState.on
}
上面的效果很好,但是,我想尝试是否可以创建一个 UITextFieldDelegate 来以相同的方式控制上面的 UITextField。到目前为止,我通过实现 textFieldShouldBeginEditing
实现了以下内容,其中我希望返回 false 以禁用 UITextField,但我不知道如何让 UISwitch
动态返回true 或 false 来自 textFieldShouldBeginEditing
import Foundation
import UIKit
class SwitchControlledTextFieldDelegate: NSObject, UITextFieldDelegate {
func textFieldShouldBeginEditing(textField: UITextField) -> Bool {
return false; //do not show keyboard or cursor
}
}
在ViewController中,我尝试设置
self.uiswitchControlledTextField.delegate = SwitchControlledTextFieldDelegate()
但它并没有按照我的意愿工作。任何帮助将不胜感激。
最佳答案
self.uiswitchControlledTextField.delegate = SwitchControlledTextFieldDelegate()
问题是该行仅创建 SwitchControlledTextFieldDelegate 类的一个实例,然后该实例立即消失。
您需要使用一些已经存在且将持续存在的实例作为您的文本字段委托(delegate) - 就像您的 View Controller 一样!
关于ios - Swift:如何使用 UISwitch 来控制 UITextField 通过委托(delegate)启用或禁用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31095043/