我想使用新的自定义 UIView 实例更改 UIViewController 的默认视图,但我在 ios 和 tvos 上有不同的行为。
当我添加新视图来替换视图控制器的视图时,如下所示:
let viewcontroller: UIViewController!
let rootview:UIView!
viewcontroller = UIViewController ()
rootview = UIView (frame:viewcontroller.view.bounds)
viewcontroller.view = rootview
// Adding a button
let button = UIButton(type: .system)
button.setTitle("Tap Me", for: .normal)
button.titleLabel?.font = UIFont.systemFont(ofSize: 18)
button.addTarget(self, action: #selector(buttonTapped), for:.allEvents)
viewcontroller.view.addSubview(button)
对于ios(iPhone/ipad),我能够获取按钮单击事件。 但在 tvOS 的情况下,我没有收到按钮单击事件。
但是在 tvOS 的情况下,如果像这样使用 viewcontroller 的默认视图,我会收到按钮单击事件,并且一切正常:
let viewcontroller: UIViewController!
viewcontroller = UIViewController ()
// Adding a button
let button = UIButton(type: .system)
button.setTitle("Tap Me", for: .normal)
button.titleLabel?.font = UIFont.systemFont(ofSize: 18)
button.addTarget(self, action: #selector(buttonTapped), for:.allEvents)
viewcontroller.view.addSubview(button)
这是 tvOS 的 bug 还是 tvOS 会以这种方式发生?
不支持直接设置视图控制器的视图(除了在视图控制器的
loadView
方法中),所以你所做的总是错误的,你不应该期望它在任何平台上工作。
完成您尝试的正确方法是用另一个视图(作为其子视图)覆盖现有视图,该视图可以是简单的独立视图,也可以是不同视图控制器的视图您将其配置为该视图控制器的子视图控制器。