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,但是我不知道如何让UISwitchtextFieldShouldBeginEditing动态返回true或false。

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类的实例,然后该实例立即消失。

您需要使用一些已经存在并且将持续存在的实例作为您的文本字段委托,例如您的视图控制器!

关于ios - Swift:如何使用UISwitch来控制UITextField的启用或禁用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31095043/

10-11 22:06
查看更多