gpt4 book ai didi

ios - 关闭由 iOS 9 上的 segue 创建的 Popover

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

Stack Overflow 上有很多关于此的问题和答案,但它们仅适用于 iOS 8 及之前的版本。

iOS 9 弃用了很多东西,SO 上的答案不再有效。

也就是说,我正在通过执行这样的 segue 来呈现一个弹出窗口

[self performSegueWithIdentifier:@"myPopover" sender:self];

这个 segue 在当前 viewController 和 popover 使用的 viewController 之间创建。没有涉及按钮。弹出窗口锚定到 View 。

问题在于 prepareForSegue:identifier

[segue destinationViewController]

是一个 UIViewController

[[segue destinationViewController] popoverPresentationController]

是新的 UIPopoverPresentationController 并且这个对象不再提供关闭 api。

相反,我们应该使用

[self dismissViewControllerAnimated:YES completion:nil];

关闭弹出窗口,但这对我没有影响。

我的情况是这样的:我有一个带有文本字段的弹出窗口。如果用户隐藏键盘,我想关闭弹出窗口。

所以我这样做了:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];

然后

- (void)keyboardWillHide:(NSNotification *)notification {
[self dismissViewControllerAnimated:YES completion:nil];
}

但这一点作用都没有。

我还尝试在 popover viewController 中创建一个 unwind segue 并从呈现 View Controller 调用它,但这会使应用程序崩溃。

最佳答案

刚刚尝试了一下,一切似乎都完美无缺。

  • 您的 View Controller 层次结构(导航 Controller 等)是什么?
  • 您是否在显示弹出窗口的同一 View Controller 上正确调用了 dismissViewControllerAnimated:completion:
  • 确保 subview Controller 和导航 Controller 之间没有混淆。
  • 您还可以记录弹出 View Controller 的 presentingViewController 以进行检查。

关于ios - 关闭由 iOS 9 上的 segue 创建的 Popover,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34176715/

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