如何将 FPPopover 移动到我想要的最低位置?如果我把它推得太低,它会跳回顶部

Posted

技术标签:

【中文标题】如何将 FPPopover 移动到我想要的最低位置?如果我把它推得太低,它会跳回顶部【英文标题】:How do I move FPPopover as low as I want? If I push it too low, it jumps back to the top 【发布时间】:2013-05-12 23:33:16 【问题描述】:

我正在使用FPPopover 为我的 iPhone 应用程序呈现一个弹出视图。但是,我遇到了一个问题,当我展示它时,它只会让我展示它的位置太低,否则它会跳到顶部。无论如何,这是在它被切断之前。

例如:

[self.speedOptionsPopover presentPopoverFromPoint:CGPointMake(0, 235)];

工作正常,但如果我把它设置为 255 而不是 235(因为它距离底部 40 像素很好)它会跳回顶部。

有没有人有这方面的经验或者我该如何解决?

另外,如果你能解释为什么弹出框的内容总是从顶部开始 50px,当我希望它开始更高时,我会加分。我该如何改变呢?

更多来自创作的代码:

- (void)speedOptionsTapped:(UIBarButtonItem *)sender 
    // Set the delegate in the controller that acts as the popover's view to be self so that the controls on the popover can manipulate the WPM and number of words shown
    self.speedOptionsController.delegate = self;

    self.speedOptionsPopover.arrowDirection = FPPopoverNoArrow;
    self.speedOptionsPopover.border = NO;
    self.speedOptionsPopover.contentSize = CGSizeMake(320, 190);
    [self.speedOptionsPopover presentPopoverFromPoint:CGPointMake(0, 235)];

【问题讨论】:

您是否尝试设置按钮的框架?它会改变什么吗? 您是否在 .nib 中的视图中使用 FPPopover? FPPopover 的高度是多少。能不能也加个截图。 我在一个故事板的视图中使用它。我不知道截图会有什么帮助,这很容易解释,但我添加了更多代码来显示高度。 【参考方案1】:

尝试替换 FPPopoverController.m 中的这部分代码:

//ok, will be vertical
if(ht == best_h || self.arrowDirection == FPPopoverArrowDirectionDown)

使用此代码:

//ok, will be vertical
if (self.arrowDirection == FPPopoverNoArrow)

   r.origin.x = p.x;
   r.origin.y = p.y;

else if(ht == best_h || self.arrowDirection == FPPopoverArrowDirectionDown)

您可能遇到此问题的原因是宏 FPPopoverArrowDirectionIsVertical 将没有箭头的弹出框视为具有垂直箭头。因此,结果是尝试将您的弹出框尽可能靠近触发弹出框的视图。

如果您按照上面指示替换代码,您将为没有箭头的弹出框创建一个特殊情况,并要求在不重新定位的情况下尊重原始点。

【讨论】:

以上是关于如何将 FPPopover 移动到我想要的最低位置?如果我把它推得太低,它会跳回顶部的主要内容,如果未能解决你的问题,请参考以下文章

如何将 node_modules 正确移动到不同的位置

如何仅根据最低位置精度更新位置

如何将提示位置移动到标题下方或后退按钮位置

如何在chrome中打开网站并自动修改它

移动节点后,SKSpriteNode的X,Y坐标不会更改

Cesium-如何计算点击位置周围指定区域的最高点、最低点、平均高度?