【发布时间】:2016-07-31 21:42:54
【问题描述】:
我在MySample.xib 中创建了一个自定义 UIView。我已将 MyView 类添加到 xib 的 File Owner 中。
MyView.swift
class MyView: UIView {
@IBOutlet var view: UIView!
override init(frame: CGRect) {
super.init(frame: frame)
setup()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setup()
}
func setup() {
NSBundle.mainBundle().loadNibNamed("MySample", owner: self, options: nil)
self.addSubview(self.view)
}
}
我现在从MyController 文件中加载这个MyView,如下所示:
MyController.swift
class MyController: UIViewController {
init() {
super.init(nibName: nil, bundle: nil)
view.addSubview(MyView())
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
现在要显示此视图,我正在使用来自另一个控制器的 UIButton 的以下代码:
presentViewController(MyController(), animated: true, completion: nil)
这确实会在屏幕上显示视图。但问题是,它不接受任何用户交互。在我的自定义视图中,我有一个 UITableView 可以显示数据,但由于缺少用户交互,它不会滚动或被点击。
知道我做错了什么吗?
【问题讨论】:
-
您是否使用了视图层次检查器来确保自定义视图之上没有任何内容?
-
@EmilioPelaez 是的,我已经检查过了,上面什么都没有。
-
如果在
MyView上覆盖touchesBegan...会发生什么?它会被调用吗?userInteractionEnabled是真的吗? -
@EmilioPelaez 没有任何反应。它永远不会进入那个
touchesBegan函数。视图上的userInteraction也已启用。 -
@EmilioPelaez 我尝试在
MyController上使用touchesBegan,它确实有效。但它在MyView中不起作用。在我上面的代码中,我已将其添加为MyController中的子视图。