ios - Swift:如何使用 UISwitch 来控制 UITextField 通过委托(delegate)启用或禁用

标签 ios swift delegates uiswitch uitextfielddelegate

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 动态返回truefalse 来自 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/

相关文章:

ios - 将一个 NSMuatblearray 添加到另一个 NSMutablearray?

ios - 关闭文本字段键盘时 UIView 动画不起作用

ios - UISearchBar 到 UISearchDisplayController 的转换关闭了 20px

SwiftUI:内容是图像的 ViewModifier

c# - C# 中的 Func<TResult> 是什么?

iphone - ARC 在 iOS 4.3 中不工作

ios - Swift:使 UIGestureRecognizer 只影响一个 UICollectionViewCell 而不是所有

c# - 无限范围变量将分配在哪里?

c# - 带有 params 关键字的委托(delegate)会匹配任何方法吗?

ios - App更新后如何唤醒?