0

有没有一种方法可以计算/检测 PopOverController 是否位于 View 的顶部?如果有一种方法让它显示 allowedArrowDirections:UIPopoverArrowDirectionDown 与 allowedArrowDirections:UIPopoverArrowDirectionUp 取决于您是在视图的底部还是顶部,或者是否有足够的空间来显示 popOverControl 而无需调整大小?替代方案我正在考虑向下或向上滚动视图如果没有足够的空间,但我想使用 allowedArrowDirections:UIPopoverArrowDirectionDown 和 allowedArrowDirections:UIPopoverArrowDirectionUp。有什么建议么?

4

2 回答 2

0

从中获取您的触摸坐标

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [touches anyObject];
    CGPoint touchPoint = [touch locationInView:myView];
    NSLog("%lf %lf", touchPoint.x, touchPoint.y);
}

获得 X 和 Y 点后,您可以计算打开 PopOverController 的可用空间。

如果您需要进一步的帮助,请告诉我

于 2013-04-12T04:50:53.937 回答
0

您不需要计算弹出框控制器将放置视图的位置。弹出框控制器旨在让您指定箭头可能指向的位置以及将添加弹出框的视图。然后弹出框控制器将计算它有空间显示弹出框视图的位置。

但是,如果您可以通过指定一个或多个UIPopoverArrowDirection. 例如,假设您有一个大视图(视图 A),而较小的子视图(视图 B)位于视图 A 的左侧。如果要显示位于视图 B 右侧的按钮视图的弹出框,当您展示它时,您可以告诉弹出框控制器仅在视图 A 内的按钮框架右侧显示其弹出框视图,如下所示:

[popoverController presentPopoverFromRect: buttonView.frame
                                   inView: viewA
                 permittedArrowDirections: UIPopoverArrowDirectionLeft
                                 animated: YES];

编辑

你能在包含表格视图的视图的坐标空间中获取文本字段的框架吗?

CGRect frame = [tableView.superview convertRect: textField.frame fromView: textField.superview];
[popoverController presentPopoverFromRect: frame
                                   inView: tableView.superview
                 permittedArrowDirections: UIPopoverArrowDirectionLeft
                                 animated: YES];

假设 tableView 的超级视图足够大以满足您的需求,这应该可以容纳弹出框的显示。

于 2013-04-11T16:24:01.990 回答