iPad:点击导航栏中的按钮时关闭弹出窗口

Ste*_*nze 2 popover ipad uipopovercontroller ios

我有一个导航栏,其中包含多个按钮,包括后退按钮,编辑按钮和打开弹出窗口的按钮.

当弹出窗口打开并且用户点击任何其他按钮时,我希望弹出窗口关闭.我可以尝试检测所有按钮上的每个按钮,并在弹出窗口打开时拦截动作,但我可能会有更优雅的选项.它适用于不在导航栏内的所有项目的点击,只有导航栏中的按钮不会忽略弹出窗口.

有什么建议?

我的问题非常类似于UIPopoverController在点击NavigationBar时没有解雇,但我似乎没有办法询问作者他是否解决了这个问题.

Ash*_*ani 9

我知道这可能有点晚了,但对其他人来说:

出现此问题的原因是,如果在导航栏上单击按钮时显示popoverController ,则导航控制器默认存在于popoverController 的passthroughViews中.

要解决这个问题,只需将passthroughViews的引用设为nil即可.

所以呈现popoverController之后添加以下行:

popoverController.passthroughViews = nil;
Run Code Online (Sandbox Code Playgroud)

希望这有助于某人.

  • 是的,但是如果用户旋转iPad,当仍然显示弹出框时,条形按钮将响应敲击.我试图在didRotateFromInterfaceOrientation中再次将passthroughViews设置为nil,但这不起作用.UIKit坚持重新展示弹出片后,他们调用了旋转,从调用接口方向调整... (2认同)