问题标签 [uimodalpresentationstyle]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
83 浏览

ios - ViewController 没有收到 DidDismissPopover 通知

我有一个视图控制器 B,它由另一个视图控制器 A 显示为弹出窗口。视图控制器 B 符合协议UIPopoverPresentationControllerDelegate(在其头文件中定义)并实现此方法。

在视图控制器 A 中,我初始化视图控制器 B,将其 modalPresentationStyle 设置为UIModalPresentationPopover并使用方法呈现它presentViewController:animated:completion:

当我通过单击旁边的弹出框关闭弹出框时,我没有收到任何通知。为什么视图控制器 B 没有收到此通知?

当我使视图控制器 A 符合UIPopoverPresentationControllerDelegate并在那里实现该方法时,也会发生同样的事情。

我正在使用 Objective C 和 iOS 9 的目标。

编辑

感谢下面的评论,我发现了错误。我忘了设置委托。我现在将视图控制器 A 中的委托设置为它自己,并让 A 从视图控制器 B 中检索它需要的数据。

0 投票
0 回答
264 浏览

objective-c - 是否可以使用首选样式 UIAlertControllerStyleActionSheet 更改 UIAlertController 的模式表示样式?

我知道您必须通过警报控制器的 popoverPresentationController 提供此弹出框的位置信息。您必须提供 sourceView 和 sourceRect 或 barButtonItem,但当它是 iPad 时,我想在中间显示警报表。

0 投票
0 回答
134 浏览

ios - 在 iPhone 上调整表单演示文稿的高度

通过使用 UIAdaptivePresentationControllerDelegate,我能够获得以表单样式呈现的视图控制器。

设置preferredContentSize可以改变vc的宽度但不能改变高度,为什么?

preferredContentSize 设置为 (200,200) 的屏幕截图

0 投票
0 回答
1056 浏览

ios - 在当前上下文中显示 ViewController 卡住了

当我按下一个按钮(“Touch Down”)并且当我释放该按钮(“Touch Up Inside”)时,我试图在当前上下文中以模态方式呈现一个视图控制器,我希望视图控制器被关闭。

这是我的代码:(buttonPressed 是“Touch Down”事件,buttonReleased 是“Touch Up Inside”事件)

但是,如果我发送垃圾邮件按钮 anotherView 会卡住并让我留在那里。有谁知道这个问题的解决方案?谢谢你。

编辑:另外,如果我将动画更改为 false,这仍然会发生,所以这可能不是问题。

编辑 2我解决了这个问题。我只是从按钮上听错误的事件。如果您真的很快按下并释放按钮,似乎被触发的事件是“触摸取消”。我也添加了这一点,我的代码现在可以正常工作了。

0 投票
0 回答
251 浏览

ios - 在 textView iOS 中将弹出框锚定到所选 textRange 的矩形

我正在尝试从UIMenuItem哪个锚点呈现一个弹出框,该锚点是textView. 我有以下代码:

该应用程序在行中崩溃colorVC.modalPresentationStyle = .popover。有人能告诉我这里发生了什么吗?谢谢!:)

0 投票
1 回答
82 浏览

ios - 如何为“可可触摸框架”组件实现弹出框?

问题:如何在“可可触摸框架”中实现(我猜我的意思是 IOS 最佳实践)模式弹出框?

这里假设它是一个通用应用程序,因此将同时支持 iPhone 和 iPad。可以假设情节提要用于使用可可触摸框架的主要应用程序。

例如,组件的最佳实践是必须将“请向用户询问 X、Y、Z 信息到主应用程序及其视图控制器,然后使用如下方法:

这会很困难,然后需要为使用的组件(/框架)构建一些应用程序,所以这似乎不可能?替代方法可能是在组件中手动创建一个弹出视图,但是不确定您是否会从有助于支持 iPad 和 iPhone 重新正常弹出方法的 IOS 最佳实践方法中受益?

例如,假设您有一个自定义地图组件,您希望用户能够放入,但该组件的一个方面是,当用户选择/放置一个图钉时,您希望能够抛出一个模式对话框要求用户自定义此删除的 pin 的名称。

(希望这是有道理的)

0 投票
1 回答
96 浏览

objective-c - iOS 7 覆盖 CurrentContext 模态表示

我有一个非常标准的视图层次结构,主要是UITabBarController包含几个UINavigationControllers。

我正在创建一个新的UINavigationController并从其中一个选项卡中以模态方式呈现它。

我希望它与 一起显示UIModalPresentationCurrentContext,所以我将其设置为:

然后,我这样呈现:

但是当它出现时,它是全屏的,而不是我设置的当前上下文。

当我查看断点时,模式表示样式 onnewNavCon更改为UIModalPresentationFullScreen立即 after presentViewController

真正让我困惑的是,这种行为发生在 iOS7 上。它在 iOS 8-10 上完全符合预期。

为什么会这样?在 iOS7 上是否有一些我不知道的特定怪癖?为什么演示风格会像这样被覆盖?

编辑:为了澄清,这是我正在使用的视图层次结构:

  • UIViewController(作为容器,全屏)
  • UITabBarController(不是全屏,由容器控制)
    • definesPresentationContext
  • UINavigationController(作为标签根,显示模式窗口)
    • definesPresentationContext
  • UINavigationController(由上述模态呈现UIViewController
    • modalPresentationStyle=UIModalPresentationCurrentContext
  • UIViewController
0 投票
1 回答
1316 浏览

ios - 将定义PresentationContext 与 UIModalPresentationStyle.custom 一起使用

我正在使用视图控制器包含来管理一组子视图控制器,这些子视图控制器应该能够以自定义方式以模态方式呈现其他视图控制器。

我遇到了一个问题,即当从视图控制器使用时不使用definesPresentationContext该属性UIModalPresentationStyle.custom

例如,我有三个视图控制器:ROOTAB

A是 的孩子ROOT。我想在使用 custom 、和时以B模态方式呈现。AUIPresentationControllerUIViewControllerTransitioningDelegateUIViewControllerAnimatedTransitioning

所以我在控制器的代码中执行以下操作A(注意控制器AdefinesPresentationContext设置为true):

但是,在我的演示控制器(也是我的UIViewControllerAnimatedTransitioning)中,我遇到了以下问题:

在这个函数中,我希望它是fromVCtype A,它实际上是ROOT。尽管A指定definesPresentationContext.

所以我认为这是因为我正在使用UIModalPresentationStyle.custom. 所以我把它改成UIModalPresentationStyle.overCurrentContext

这会导致 iOS 从 正确读取definesPresentationContext属性A,并且我的animateTransition函数现在被正确地从视图控制器调用,但是:

因为我的模态演示样式不再是.custom,所以我的转换委托中的以下方法不再被调用

所以我的演示控制器变得未使用。

我想要一种.custom尊重definesPresentationContext. 这可能吗?我错过了什么吗?

基本上,我想要在当前上下文中自定义模式演示。

0 投票
3 回答
601 浏览

ios - Swift3:在呈现弹出窗口时崩溃

在设置断点时,调试器一直运行到最后一行。之后,它直接进入AppDelegate班级第一行。

我已经正确设置了异常断点。我可能在哪里犯错?它与sourceViewfor相关popoverPresentationController吗?我不知道。

我想做的是设置popoverPresentationController中心。有什么帮助吗?

编辑: 我添加sourceView到代码中,如下所示,现在它正在工作:

但是,它不在屏幕中央。放截图供参考。如何使其到达中心并移除方向箭头?

在此处输入图像描述

0 投票
3 回答
1177 浏览

ios - 使用 overCurrentContext 呈现视图控制器,然后推送到导航堆栈会导致导航栏重叠

我因导航栏问题而将头撞到墙上。请参阅此示例项目,以更好地了解我想要实现的目标。基本上,我的应用程序结构是这样的:

导航堆栈的第二个视图控制器(称为 B)上的按钮将呈现一个具有清晰背景的模态视图控制器(它的模态呈现样式overCurrentContext看起来像一个弹出框):

视图控制器B

弹出框

然后,弹出框上的一个按钮会将一个新的视图控制器推送到导航堆栈(称为 C):

呈现C

[视图控制器C

弹出框由 B 呈现,而不是实际的导航控制器(B 定义呈现上下文)。这样当弹出框将 C 推入堆栈时,C 不仅覆盖 B,而且还覆盖弹出框。

解散 C 时会出现问题。导航堆栈弹回 B,而弹出框仍在顶部(这是我的意图)。但是,B 现在填充了导航视图控制器的整个框架(在按下 C 之前,B 的顶部被固定到导航栏)。这会导致 B 顶部附近的视图被导航栏剪裁:

在此处输入图像描述

查看 UI Inspector 确认这是因为 B 的视图现在填充了导航控制器的视图:

在此处输入图像描述

在 C 出现之前情况并非如此。关于导致这种情况发生的任何想法?