【发布时间】:2016-06-02 09:23:46
【问题描述】:
我已经为我的 Swift 应用程序中的滑出式菜单实现了 SWRevealViewController。这个框架的一个问题是,当菜单(后视图)展开时,用户仍然可以与前视图交互。由于我的 frontView 是全出血地图,因此很难通过点击 frontView 来关闭菜单,因为它不会将其识别为平移/点击来关闭它,而是会四处移动地图。
Objective-C here 也有同样的问题。来自@hardluckbaby 的top answer 似乎是最好的解决方案,但它在Objective-C 中。我已经在 Swift 中得到了答案的第一部分,我需要第二部分的帮助。
如果在我的后视图控制器中添加这两个功能,当后视图(菜单)打开时成功禁用前视图上的交互:
override func viewWillAppear(animated: Bool) {
self.revealViewController().frontViewController.view.userInteractionEnabled = false
}
override func viewWillDisappear(animated: Bool) {
self.revealViewController().frontViewController.view.userInteractionEnabled = true
}
这最后一部分我需要帮助转换为 Swift。假设为我的 frontView 重新启用平移/点击手势。在我的 frontView 中,我想将以下内容放在我的 ViewDidLoad 函数中:
SWRevealViewController *revealController = [self revealViewController];
[revealController panGestureRecognizer];
[revealController tapGestureRecognizer];
最后一部分如何用 Swift 编写?
我尝试将它添加到此功能,但它无法识别我的水龙头。我需要从这个 IF 语句中删除它吗?
override func viewDidLoad() {
super.viewDidLoad()
if self.revealViewController() != nil {
self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
self.view.addGestureRecognizer(self.revealViewController().tapGestureRecognizer())
}
}
【问题讨论】:
标签: ios swift swrevealviewcontroller