• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

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

[复制链接]
菜鸟教程小白 发表于 2022-12-12 09:57:33 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

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,这个对象不再提供dismiss api。

相反,我们应该使用

[self dismissViewControllerAnimated:YES completion:nil];

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

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

所以我这样做了:

[[NSNotificationCenter defaultCenter] addObserver:self selectorselector(keyboardWillHide name:UIKeyboardWillHideNotification object:nil];

然后

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

但这根本没有效果。

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



Best Answer-推荐答案


刚刚试了一下,似乎一切正常。

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

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

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap