我意识到当从父UIViewcontroller打开一个新的UIVewcontroller并触摸我的ChildViewContorller上的空白区域(没有GUI元素控件)时,它会调用Parents touchesBegan:
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
我父母的观点(在屏幕上看不到)。
有什么不妥或如何防止这种情况?
答案 0 :(得分:0)
我确实以这种方式在我的应用中解决了这个问题 1.首先定义一个代表当前视图控制器的枚举
enum ViewControllerState {
case FirstViewController
case SecondViewController
// ....
}
2。然后定义一个协议,为那些需要此行为的视图控制器定义此规则
protocol ViewControllerStatePresentation {
var viewControllerState: ViewControllerState
}
3。接下来,使所有视图控制器(需要此行为的视图控制器)确认此协议。
class ViewController: ViewControllerStatePresentation {
var viewControllerState: ViewControllerState!
}
4。现在,当您呈现子视图控制器时,然后更改viewControllerState。当viewControllerState是childViewController时,将childViewController的父视图userInteractionEnabled
属性设置为false,否则将其设置为true。
答案 1 :(得分:0)
我找到了一个简单的解决方案。我仍然不确定这是否是最佳做法,但这对我来说是最易于维护的方式。
我刚刚将以下内容添加到uiviewcontroller:
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
}
override func touchesEnded(touches: Set<NSObject>, withEvent event: UIEvent) {
}
在空旷的地方触摸时,它什么都不做。