UIPopoverController可以在屏幕上移动吗?

时间:2011-05-06 20:42:41

标签: iphone ios ipad animation uipopovercontroller

是否可以在屏幕上显示UIPopovercontroller后移动它?    我在我的应用程序中有一个小视图,可以稍微移动,我希望UIPopoverController随身携带,而不必每次移动时重新呈现UIPopoverController。这可能吗?

4 个答案:

答案 0 :(得分:1)

从iOS 9开始,“不推荐使用UIPopoverController。现在将Popovers实现为UIViewController演示文稿。使用UIModalPresentationPopover和UIPopoverPresentationController的模式演示样式。”

使用以下内容呈现弹出窗口。您可以更改sourceRect和sourceView的值,但这不是API行为。

    DetailViewController *detailVC = self.detailViewController;
    detailVC.preferredContentSize = CGSizeMake(420, 92);
    detailVC.modalPresentationStyle = UIModalPresentationPopover;


    UIPopoverPresentationController *presController = detailVC.popoverPresentationController;
    if (presController) {
        presController.delegate = detailVC;
        presController.barButtonItem = self.detailButton;
        presController.sourceRect = self.view.frame;
        presController.sourceView = self.view;
        presController.permittedArrowDirections = UIPopoverArrowDirectionAny;
    }

    [self presentViewController: detailVC animated:YES completion:^{

    }];

相反,我建议保留对弹出窗口中显示的视图控制器的引用,忽略弹出窗口并重新呈现。

DetailViewController *detailVC = self.detailViewController;
[self dismissViewControllerAnimated:NO completion:^{

    UIPopoverPresentationController *presController = detailVC.popoverPresentationController;
    if (presController) {
        presController.delegate = detailVC;
        presController.barButtonItem = self.detailButton;
        presController.sourceRect = self.view.frame; //Update frame
        presController.sourceView = self.view;
        presController.permittedArrowDirections = UIPopoverArrowDirectionAny;
    }

    [self presentViewController: detailVC animated:NO completion:^{

    }];
}];

答案 1 :(得分:1)

您可以重新调用presentPopoverFromRect。

请参阅http://developer.apple.com/library/ios/#qa/qa1694/_index.html

答案 2 :(得分:0)

不,你不能。这不是方法。

pover presentPopoverFromRect:

在评论中提到,但请注意

  

如果没有重新绘制,你就无法代表。

答案 3 :(得分:0)

您可以跟踪屏幕上的用户触摸,并使用presentPopoverFromRect:重新显示弹出框。