弹出框未附加到锚点

Posted

技术标签:

【中文标题】弹出框未附加到锚点【英文标题】:Popover not attached to anchor 【发布时间】:2015-10-06 08:03:59 【问题描述】:

我想显示一个带有箭头的弹出框,指向属于我视图一部分的按钮(例如,按钮在我的主视图上)。我在 Interface Builder 故事板编辑器中执行此操作(ctrl 从按钮拖动到弹出内容视图)。弹出显示但未附加到按钮。我为工具栏弹出窗口上的按钮找到的内容按预期显示附加到按钮上。 segue 的 Anchor 属性设置为此按钮。 Xcode 版本 7.0.1 (7A1001)。

编辑:我所做的图像: 1)故事板。首先我 ctrl 从工具栏按钮拖动到第一个控制器,然后 ctrl 从第二个按钮拖动到第二个控制器。 2)正确连接弹出框 3) 弹出框不附加到视图中的按钮。

【问题讨论】:

请附上示例代码。谢谢 @xhruso00 我在 Interface Builder 中执行此操作,还没有代码。我将用于弹出窗口的视图控制器添加到情节提要,然后使用弹出框 segue 将其与视图上的按钮连接起来。 如果您不提供示例,请将图片附在您的代码中,并告诉我什么是正确的行为,什么不是。这比发布不接受的答案要快。我为你花时间(无偿)。 @MarekH 创建了一个空的测试项目并将图像添加到问题中。感谢您的建议。 添加了答案。看起来必须填写错误报告。我什至仔细检查了故事板的源代码(这是正确的) 【参考方案1】:

你是对的。以下方法显示发送视图为 nil,默认使用 window 的 contentview 进行弹出。

因此,只需检查 positionView 是否为零即可修复。如果是,将其设置为按钮(为其创建插座)。

将以下方法添加到您的 viewController

- (void)presentViewController:(NSViewController *)viewController asPopoverRelativeToRect:(NSRect)positioningRect ofView:(NSView *)positioningView preferredEdge:(NSRectEdge)preferredEdge behavior:(NSPopoverBehavior)behavior

  //do custom implementation (workaround)
  [super presentViewController:viewController asPopoverRelativeToRect:positioningRect ofView:positioningView preferredEdge:preferredEdge behavior:behavior];

【讨论】:

我看到的一个问题是如何确定在哪个按钮之后首先调用此方法(我在实际应用程序中有多个按钮)。 检查哪一个被按下(状态)。不要忘记检查调用者之一是否可能是工具栏项。这你必须与 XIB 核对。

以上是关于弹出框未附加到锚点的主要内容,如果未能解决你的问题,请参考以下文章

加载 Ajax 时,Bootstrap 弹出框不工作

没有箭头无法定位弹出框

弹出框覆盖我的一些组件的问题

移动时附加到 UICollectionView 中的单元格的弹出框被称为此集合视图的 ReloadData

如何使用情节提要从自定义 uitableviewcell 正确启动弹出框转场

Bootstrap的js插件之标签工具弹出框警告框按钮折叠狂轮播附加菜单