当用户点击外面某处时,有没有办法让UIPopoverController
不解雇?我希望用户必须使用取消按钮(是的,我意识到这可能会以某种方式违反Apple的HIG,但这是一种罕见的情况,从用户体验的角度来看是有意义的)。
感谢您的帮助。
答案 0 :(得分:26)
只需在modalInPopover
中显示的UIViewController
上设置UIPopoverController
属性即可。
popover = [[UIPopoverController alloc] initWithContentViewController:content];
content.modalInPopover = YES;
[popover presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
请注意,as of iOS5,您必须在modalInPopover
内设置-viewDidAppear
。
答案 1 :(得分:20)
您可以对点击发生的位置进行点击测试,并在弹出窗口的委托中返回NO。 - (BOOL)popoverControllerShouldDismissPopover:(UIPopoverController *)popoverController
答案 2 :(得分:1)
所以,我意识到这是一个老问题。但是,对于今天寻求解决方案的人来说,这是一个更简单的答案。
如果您使用Storyboard Segue,则可以在segue上设置passthrough属性,以允许与视图中的其他对象进行交互。如果这样做,单击弹出窗口边界外不会关闭弹出窗口。
这里有更多信息: What are Anchor and Passthrough used for in popover segues?
以下是Apple文档的摘录:
允许用户与指定的视图进行交互而不是关闭 弹出窗口,您可以将一个或多个视图分配给passthroughViews 属性。