ios - 打开 subview 后背景 uiview 仍然可触摸

标签 ios swift

我意识到当从父 UIViewcontroller 打开一个新的 UIVewcontroller 并触摸我的 ChildViewContorller 上的空白区域(没有 GUI 元素控件)时,它调用了 Parents touchesBegan:

override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {

我 parent 的观点(在屏幕上不可见)。

什么错误或如何防止这种情况?

最佳答案

我确实以这种方式在我的应用程序中解决了这个问题 1.首先定义一个代表当前 View Controller 的枚举

enum ViewControllerState {
    case FirstViewController
    case SecondViewController
    // ....
}

2。然后定义一个协议(protocol),为那些需要这种行为的 View Controller 定义这个规则

protocol ViewControllerStatePresentation {
    var viewControllerState: ViewControllerState
}

3。接下来,让所有 View Controller (那些需要此行为的 View Controller )确认此协议(protocol)。

class ViewController: ViewControllerStatePresentation {
    var viewControllerState: ViewControllerState! 
}

4.现在,当您呈现 subview Controller 时,然后更改 viewControllerState。当 viewControllerState 为 childViewController 时,将 childViewController 的父 View userInteractionEnabled 属性设置为 false,否则将其设置为 true。

关于ios - 打开 subview 后背景 uiview 仍然可触摸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32114053/

相关文章:

ios - 使用分段控件在 UITabBarController 中以模态方式呈现导航 View Controller

ios - 每周通知的 LocalNotification repeatingInterval 值

ios - 为什么我的数组没有填充从 for 循环成功获取的信息?

ios - 更改 NSDate 格式

影响应用下载的 iOS 版本

iphone - 布局管理器,还是有更好的解决方案?

xcode - 即使我在 Swift、Xcode 6 中声明,也会出现 switch 'expected declaration' 错误

swift - 无法使用变量创建自定义快速颜色

swift - strip 错误 "create token with card(_:completion:) is unavailable"

ios - NSDateFormatter iOS,日期模式