【发布时间】:2015-08-02 23:39:58
【问题描述】:
我是 iOS 开发的新手,遇到了一个看似简单的问题,但无论我尝试哪种方式都无法解决。
我有一个自定义视图类 @IBDesignable class ValidatedInputFieldView: UIView,它包含 2 个 UI 元素。
其中之一是UITextField。
ValidatedInputFieldView 被添加到其父视图class ViewController: UIViewController, UITextFieldDelegate。
我希望ViewController 响应来自UITextField 的textFieldShouldReturn 事件,而不是UITextField 所在的ValidatedInputFieldView。
我已尝试公开UITextView 的delegate 字段:
@IBOutlet var textFieldDelegate:UITextFieldDelegate?
并将其设置在ValidatedInputFieldView:
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
xibSetup()
contentTextField.delegate = textFieldDelegate
}
然后使用解决方法将其链接到 IB 中: 将 outlet 的类型声明为 AnyObject 或 NSObject,使用 Interface Builder 将对象连接到 outlet,然后将 outlet 的类型改回协议。
但它根本不起作用。
Debug 说对象是nil。
我无法理解 Subview 中发生的那些事件是如何传递给 Parent 视图的,以及我应该使用什么来公开委托。
【问题讨论】: