|
1
53
我最近提出了一个解决方案,我想与大家分享 (如果晚了两个月,很抱歉)。 为了在菜单打开时禁用前视图上的用户交互,我在 菜单视图控制器 : 在…上 视图将出现 :
和 视图将消失 :
这将禁用前视图控制器上的所有用户交互,这意味着关闭菜单的滑动/轻击手势也将被禁用。 现在,我已经创建了一个 父视图控制器 并使所有视图控制器(菜单项)成为其子类。 在我的 视图DidLoad ,我输入了以下代码:
如果此时运行应用程序,则“轻触手势”似乎有效(点击“前视图”将关闭“菜单”),但“平移手势”无效。我不知道为什么会这样,但为了使滑动手势关闭菜单,请在 菜单视图控制器 : 在…上 视图将出现 :
总而言之,以下是您需要的: 在您的 菜单视图控制器 :
在菜单项的视图控制器上(您可以 父视图控制器 对于所有这些):
希望这有帮助! |
|
2
13
我使用了另一种方法来实现同样的结果,但不确定这是否有帮助。 分配 SWRevealViewControllerDelegate 到 应用程序委托
然后在
代表
方法
已更新
:添加了此行
|
![]() |
3
6
@hardluckbaby的Swift版本回答: 在里面 菜单视图控制器 ( 后视控制器 ):
在里面 FrontView控制器 (你可以 父视图控制器 对于@hardluckbaby所说的所有前视图控制器):
|
![]() |
4
3
正如John所解释的:虽然这些解决方案确实有效,但我认为它们都没有解决最初的问题,这实际上很简单: 涉及两个步骤:
(例如@interface HomeViewController:UIViewController) 其中我的FrontViewController被命名为HomeViewController 以及FrontViewController.m文件中的ViewDidLoad上的以下内容: self.revelViewController.default=self; 问题解决了!比创建父类等容易得多。 这将帮助您解决FrontView控制器的用户交互问题。我只需添加上面从Xun的响应中得到的以下更改,当用户点击FrontViewController时,您将解决用户交互和隐藏菜单。
|
![]() |
5
2
此处为Frontviewcontroller代码。。。
SideDrowerview控制器代码。。。
|
![]() |
6
1
打开后视图时,将子视图添加到前视图。 |
![]() |
7
1
在菜单项控制器的viewWillAppear方法中,只需在前视图上创建一个覆盖按钮,并将操作设置为revalToggle:of revalViewController
在revalToggle方法中,删除覆盖按钮(如果有):
|
![]() |
8
1
尽管这些解决方案确实有效,但我认为它们都没有解决最初的问题,这实际上很简单: 涉及两个步骤: 1) 将以下方法添加到 FrontViewController.m :
2) 使您的前视图控制器成为SWRevealViewController的代理 FrontViewController.h 文件:
其中我的FrontViewController被命名为HomeViewController 以及 FrontViewController.m ViewDidLoad上包含以下内容的文件:
问题解决了!比创建父类等容易得多。 |
![]() |
9
1
另一种方法是在显示后视图时使用覆盖视图。您可以使用此更新的库 https://github.com/NSRover/SWRevealViewController 并确保在显示后视图时包含shouldUseFrontViewOverlay=true。 |
|
10
1
|
![]() |
11
0
|
![]() |
12
0
考虑以下解决方案,效果完美
中的简单用法
|
![]() |
13
0
添加到 硬鹿宝宝 答复
它增加了一些不期望的行为,例如,当启动时,平移手势将关闭后视图。 如果您将默认平移手势添加到您自己的视图中,例如在 视图DidLoad 前视图控制器:
删除这些线条,这应该可以像预期的那样,用于平移和轻敲手势
|
|
14
0
我使用的是viewWillAppear和viewWillDisappear功能,但因为我在侧菜单中几乎每个项目都有子视图。我的问题是我有一个激活的输入字段(键盘显示)并访问了侧菜单。在根菜单中,键盘隐藏,但在我进入子菜单后,键盘再次出现。为了解决这个问题,我改变了在revalController中启用和禁用交互的方法,如下所示:
|
![]() |
15
0
首先,只需设置您的代理人: self.revelViewController.default=self; 委托方法如下:
|