问题描述
|
经过一番搜索,我找不到似乎对许多人有用的答案。
当用户单击外部某处时,有没有办法使“ 0”不消失?我希望用户必须使用“取消”按钮(是的,我意识到这可能以某种方式违反了Apple的HIG,但这是一种罕见的情况,从用户体验的角度来看很有意义)。
谢谢你的帮助。
解决方法
您可以对点击发生的位置进行测试,并在弹出窗口的委托中返回NO。
- (BOOL)popoverControllerShouldDismissPopover:(UIPopoverController *)popoverController
, 只需在显示在UIPopoverController
中的UIViewController
上设置modalInPopover
属性。
popover = [[UIPopoverController alloc] initWithContentViewController:content];
content.modalInPopover = YES;
[popover presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
请注意,从iOS5开始,您必须在-viewDidAppear
内设置modalInPopover
。
, 因此,我意识到这是一个老问题。但是,对于今天正在寻找解决方案的任何人来说,都有一个更简单的答案。
如果使用情节提要Segue,则可以在Segue上设置passthrough属性,以允许与视图中的其他对象进行交互。如果这样做,则在弹出框的边界之外单击不会关闭弹出框。
这里有一些更多信息:
在弹出式窗口中使用“锚定”和“传递”是什么?
这是Apple文档的摘录:
允许用户与指定的视图交互而不关闭
弹出窗口,您可以将一个或多个视图分配给passthroughViews
属性。