当视图控制器以模态方式呈现时,用户可以滚动

Posted

技术标签:

【中文标题】当视图控制器以模态方式呈现时,用户可以滚动【英文标题】:User can scroll when viewcontroller is presented modally 【发布时间】:2016-04-18 14:45:27 【问题描述】:

在我的应用中,有一个包含 5 个视图控制器的大滚动视图。

有 4 个视图控制器以模态方式显示视图控制器

使用其中三个,当模态显示时我无法滚动到其他视图控制器(这就是我想要的)。在这 3 个视图控制器中,我在用户点击按钮时呈现模式

但是在第四个中,当用户从 UITableView 中点击一个单元格时,我以模态方式显示视图控制器,并且当显示模态时,用户可以滚动到其他视图控制器。我不希望这种情况发生,我该如何阻止它?

唯一的区别是我的代码中有一个为segue做准备

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 

    NSIndexPath *indexPath = [self.userTableView indexPathForCell:sender];

    GSBConversationViewController *destVC = [segue destinationViewController];
    GSBChatUsers *selectedUser =[chatUsers objectAtIndex:indexPath.row];

    NSString *userName = selectedUser.name;

    NSLog(@"User selected: %@", userName);
    destVC.title=userName;


上面的代码用于将单元格上显示的名称传输到模态视图控制器。

【问题讨论】:

【参考方案1】:

为了防止用户通过视图触摸,您可以在您的 destVC 类中添加:

- (void) viewWillAppear:(BOOL)animated
[super viewWillAppear:animated];
self.view.userInteractionEnabled = true;

或者如果使用 .xib 或 storyboard,只需选择 destVC 视图并在右栏中选中 User Interaction Enabled

【讨论】:

以上是关于当视图控制器以模态方式呈现时,用户可以滚动的主要内容,如果未能解决你的问题,请参考以下文章

当视图控制器从 nib 文件加载时,以模态方式在当前上下文中呈现视图控制器

如何在模态呈现的视图控制器上执行呈现模态序列?

在键盘处于活动状态时呈现模态视图控制器

“viewWillTransitionToSize:”当视图控制器以模态方式呈现时在 iOS 9 中未调用

以模态方式呈现视图控制器时,导航栏与黑色而不是白色混合

视图控制器以模态方式呈现/关闭时的通知?