- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
我正在为 iPhone 和 iPad 的通用应用程序构建自定义 GUI。在 iPad 上,它严重依赖“sideViews”来实现内容操作、detailInformation 等实用程序(想想高级 SplitView)。从视觉的角度来看,新的 UIPresentationController 非常适合让我展示这些“sideViews”(而不是使用 dimmedView),并且实现易于构建和维护,同时仍然与 Storyboard很好地集成。但是我需要能够在 presentedViewController 可见时操作 presentingViewController 的内容。所以我的问题是,我可以在呈现 sideView 时在 presentingViewController 上设置 userInteractionEnabled(或类似的)吗?
最佳答案
UIPresentationController
将其容器 View 作为窗口 subview 插入呈现 View 上方,因此任何在呈现 View 之外的触摸都会被容器 View 捕获,永远不会进入呈现 View 。
修复方法是在容器 View 上插入一个 View ,该 View 通过触摸传递到呈现 View 。您可以将其用作调光 View 或将其 backgroundColor
设置为 [UIColor clearColor]
以获得完全透明的 View 。在您的演示 Controller 代码中设置直通 View 。
@interface IVPasserView : UIView
@property (strong, nonatomic) NSArray* passthroughViews;
@end
@implementation IVPasserView
- (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
UIView* hit = [super hitTest:point withEvent:event];
if (hit == self)
for (UIView* passthroughView in _passthroughViews)
{
hit = [passthroughView hitTest:[self convertPoint:point toView:passthroughView]
withEvent:event];
if (hit)
break;
}
return hit;
}
@end
注意:虽然这违反了 -[UIView hitTest:withEvent:]
的精神,因为它不返回 subview ,但这实际上是系统标准 UIPopoverPresentationController
处理它。如果您在那里设置 passthroughViews
属性,容器 View 将使用直通 View 响应 hitTest:withEvent:
,即使它们不是 super View / subview !因此,它很可能会在下一个 iOS 版本中幸存下来。
关于ios - 我可以让 UIPresentationController 在 PresentingViewController 上启用 userInteractionEnabled 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28500507/
我已经设置了一个自定义转换,设置为 similar to this tutorial here . 我现在要做的是更新(下方)UIViewController 上的 BOOL。这是在顶部显示 Cont
我的应用导航如下: NavigationController ---> RootViewController --(Show Segue)-> SomeViewController --(Show S
当我关闭弹出式 ViewController 时,我想在呈现 ViewController 上调用一个方法。我像这样从“MainViewController”启动弹出窗口:(在 EzPopup 库的帮
我有三个 View Controller ,a、b 和 c。我从a开始,然后呈现b。如果用户注销,则会显示 c。否则我会留在 b 上,下面的代码片段来自那里。如果我只从 a 到 b,则 present
有没有办法在 iOS 中呈现 ViewController,同时保持呈现的 ViewController 可见?现在,PresentingViewController 似乎在动画完成后就被隐藏了。 最
我有三个连接到选项卡栏 Controller 的 View Controller ,我认为它应该自动设置 presentingViewController/presentedViewControlle
我正在研究类似于 Mail.app 的打开草稿行为的 UIPresentationController 子类。呈现 View Controller 时,它不会一直到达顶部,呈现 View Contro
我想按照以下步骤集成 GTMAppAuth 和 GDrive: $ pod 安装 target 'GTMAppAuth Drive Example iOS' do platform :ios, '
我试图了解我的应用程序的一个奇怪行为,这里是一个描述(在一个简单的项目中测试)。 ViewControllerA 正在模态呈现 ViewControllerB ViewControllerB 包含一个
当用户购买completion handler 时通知我并关闭viewController。但是,我想在 viewController 关闭后向用户显示/显示一个 alert 。当我在调试器中单步执行
新手 iOS 开发人员在这里采用了 iOS 应用程序。 我有一个 iOS 应用程序的设置部分,当用户单击“完成”时,我想要模态视图 Controller (它当前使用的)并且我想在 presentin
在我的 MainViewController 中,我通过这个展示了另一个 View Controller : MessageViewController *messageController = [[
我只是添加了 TabBarController + NavigationController。在此之前一切正常,但现在当我从模态调用 presentingViewController 时,出现此错误:
我有一个 UINavigationGroup带有一个名为 MainViewController 的 Root View Controller .这里面MainViewController我正在调用另一
我在主视图 Controller 中有一个按钮,它以模态方式呈现另一个 View Controller 。当模态 vc 向上滑动时,我制作了一个主视图 Controller 变暗的自定义动画。但是,当
给定: 呈现 ViewController B 的 ViewController A ViewController B 没有引用 ViewController A(隐含的 presentingView
我正在使用 GoogleSignIn SDK(与 cocoapods 一起安装)学习谷歌登录到应用程序。我没有在 pod 文件中指定版本,它自动安装了 GoogleSignIn (4.4.0)。浏览文
如果 ViewControllerA 嵌入到 navigationController 中,并且 ViewControllerB 由 ViewControllerA 模态呈现。 当我打印 ViewCo
我有三个 ViewController,它的顺序是(A present B which presents C),当我留在 C viewController 中时,我必须将 ViewController
我曾经使用呈现样式 UIModalPresentationCurrentContext 从另一个 UIViewController 呈现一个 UIViewController。但它不允许我旋转 pre
我是一名优秀的程序员,十分优秀!