gpt4 book ai didi

ios - 弹出窗口可见时禁用所有交互

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:25:25 29 4
gpt4 key购买 nike

我从左栏按钮操作中呈现一个弹出 Controller (使用 ViewController.modalPresentationStyle = UIModalPresentationPopover;)。在右栏按钮操作中,我触发了一个推送 segue。理想情况下,当 popover 可见时,不应发生与 popover 后面的 View 的交互。但是,即使弹出窗口可见,我也可以单击右侧栏按钮及其推送的新 View Controller ,而无需关闭弹出窗口。

我的代码是

- (UIViewController *)menuViewController {
if (!_menuViewController) {
_menuViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"TableViewController"];
_menuViewController.modalPresentationStyle = UIModalPresentationPopover;
UIPopoverPresentationController *popoverPresentationController = _menuViewController.popoverPresentationController;
popoverPresentationController.permittedArrowDirections = UIPopoverArrowDirectionUp;
}
return _menuViewController;
}
- (IBAction)leftAction:(id)sender {
self.menuViewController.popoverPresentationController.barButtonItem = sender;

[self presentViewController:self.menuViewController animated:YES completion:nil];
}
- (IBAction)rightAction:(id)sender {
[self performSegueWithIdentifier:@"PushSegue" sender:nil];
NSLog(@"Crap here");
}

我尝试将 popover presentation controller 的 passthroughViews 设置为 nill 和空数组,但没有结果

如何在弹出窗口可见时禁用所有交互?

更新:

如果弹出窗口可见并且我们在导航栏中有任何交互,就会发生这种情况。简而言之,即使弹出窗口可见,它也会对导航栏进行交互。有什么方法可以禁用它吗?

最佳答案

在呈现弹出窗口后,在另一个运行循环中将 passthroughViews 设置为 nil。你可以这样做。

self.presentViewController(_menuViewController, animated: true) { () -> Void in
dispatch_async(dispatch_get_main_queue()) { () -> Void in
popoverPresentationController.passthroughViews = nil;
}
}

如需进一步说明,请查看此 http://karmeye.com/2014/11/20/ios8-popovers-and-passthroughviews/

关于ios - 弹出窗口可见时禁用所有交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33796878/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com