【问题标题】:UIPopoverController presentPopoverFromRect problemUIPopoverController presentPopoverFromRect 问题
【发布时间】:2011-09-04 10:04:40
【问题描述】:

我试图在单击 UIButton 时呈现 UIPopoverController。这是我的代码:

- (IBAction)showColumnChooser:(id)sender {

    ColumnChooserTVC *vc = [[ColumnChooserTVC alloc] init];

    [vc setSelections:allColumns];
    [vc setDelegate:self];
    UIPopoverController *pc = [[UIPopoverController alloc] initWithContentViewController:vc];


    [pc presentPopoverFromRect:[sender frame] inView:self.view 
      permittedArrowDirections:UIPopoverArrowDirectionAny 
                      animated:YES];
    [vc release];
}

箭头方向为“Any”时,它完全遮住了按钮,如下所示:

如果我将方向设为“右”,会好一些,但弹出框和按钮之间仍有一些空间,而且看起来不正确。 我不想做一些“技巧”或“黑客”并在试错的基础上使用 CGRect,我想知道这样做的正确方法是什么?谢谢。

这是 Neckto 要求的界面生成器中的按钮:

【问题讨论】:

  • 对不起,我不明白你在问什么。请您提供更多详细信息。你想让弹出箭头指向另一个地方吗?
  • 好吧,我希望箭头直接指向按钮。在这种情况下,您是否看到“条形/线条”图标?那就是我希望弹出箭头指向的内容。在第一个示例中,它完全遮挡了图标/按钮,在第二个示例中,它稍微好一点,但它并不指向按钮,而是向上和向左一点。希望现在干净利落。谢谢。
  • 那么问题出在[sender frame]。它太大了,可能。你如何创建那个按钮?
  • 来自界面生成器。我只是将它连接到 IBAction
  • 在IB中选择那个按钮,截图给我们看。我想看看这个按钮的框架

标签: objective-c ios cocoa-touch uipopovercontroller


【解决方案1】:

我认为您正在混合坐标系。在您的视图层次结构中的每个级别,原点都会移动。所以[sender frame]self.view中的位置并不是按钮所在的位置。

试试:

[pc presentPopoverFromRect:[sender bounds]
                    inView:sender
  permittedArrowDirections:UIPopoverArrowDirectionAny 
                  animated:YES];

【讨论】:

    【解决方案2】:

    当然还有斯威夫特,斯威夫特,斯威夫特!

    pc.presentPopoverFromRect(sender.bounds, inView: sender, 
    permittedArrowDirections: UIPopoverArrowDirection.Any, animated: true)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-05
      • 2011-09-26
      相关资源
      最近更新 更多