PopOverController在Top of View中调整大小

时间:2013-04-11 15:44:24

标签: objective-c xcode uipopovercontroller

有没有办法可以计算/检测PopOverController是否位于View的顶部?如果是这样的方法让它显示allowedArrowDirections:UIPopoverArrowDirectionDown vs allowedArrowDirections:UIPopoverArrowDirectionUp取决于你是在视图的底部还是顶部,或者是否有足够的空间来显示popOverControl而不调整大小?备选我想要向下或向上滚动视图如果没有足够的空间,但我想利用allowedArrowDirections:UIPopoverArrowDirectionDown和allowedArrowDirections:UIPopoverArrowDirectionUp。有什么建议?

2 个答案:

答案 0 :(得分: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的超级视图足够大,可以满足您的需求,这应该适应弹出框的显示。

答案 1 :(得分: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的可用空间。

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