是否可以在屏幕上显示UIPopover控制器?
我在我的应用程序中可以稍微移动一个小视图,我希望UIPopoverController可以随它移动,而不必在每次移动时重新呈现UIPopoverController。这可能吗?UIPopoverController可以在屏幕上移动吗?
回答
从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:^{
}];
取而代之的是,我建议保留对popover的视图控制器的引用,关闭popover并重新呈现。
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:^{
}];
}];
我一直在为此投票。如果您打算为接受的答案投票,请提供帮助并发表评论。 – 2013-07-19 17:12:16
“创建你自己的”不是我要找的答案 – Loukas 2016-03-18 14:06:17
@Loukas我希望你会更喜欢这个新的答案。如果UIPopoverPresentationController没有提供所需的功能,您将不得不重新创建UIPopoverController,因为API不是很灵活。 – 2016-03-19 13:42:43
不,你不能。这不是做这件事的方法。
pover presentPopoverFromRect:
在评论中提到,但注意到
目前
你不能没有重绘代表。
您可以跟踪用户在屏幕上的触摸情况,并使用presentPopoverFromRect:
来重新显示弹出窗口。
这是值得一试的,但我想这样做可能有点贵。我相信,当你解雇它并重新实现它时,正在进行的资源分配很多,这可能会对系统造成严重的负担。 – 2011-05-07 01:35:48
这是事实,但那是一个良好的内存管理进场的地方。特别是在iPad上,你有更多的记忆可供玩耍。 – WrightsCS 2011-05-07 01:41:30
您可以重新调用presentPopoverFromRect。
见http://developer.apple.com/library/ios/#qa/qa1694/_index.html
- 1. MKMapView在屏幕上移动
- 2. 将屏幕移动到屏幕上
- 3. 在移动屏幕上获取可移动屏幕上的可见部分(放大图像),在HTML中
- 4. 我可以在屏幕上移动pygame游戏窗口(pygame)
- 5. AS3 - 在屏幕上移动MovieClip
- 6. 在屏幕上移动图像
- 7. 使用NSMutablearray在屏幕上移动UILabels
- 8. 如何在屏幕上移动对象
- 9. Media Projection api可以在棒棒糖主屏幕上截取屏幕截图吗?
- 10. 滑动屏幕上的移动物体的欢迎屏幕
- 11. 是否可以在Android主屏幕上制作动画移动小部件?
- 12. 向上移动屏幕上的矩形
- 13. 在android中移动图像部分在屏幕上移动
- 14. 当导航在屏幕上变化时,在另一个屏幕上移动div
- 15. 隐藏ADBannerView。将它移出屏幕可以吗?
- 16. 以编程方式在Android屏幕上移动鼠标指针
- 17. JavaScript在小屏幕移动设备上的可访问性?
- 18. UIPearchBar与UIPopoverController持有结果无法与UIPopoverController在屏幕上交互
- 19. 您可以一次在屏幕上显示多个CAEAGLLayer吗?
- 20. 非UI线程可以显示在屏幕上吗?
- 21. 我们可以在iPhone中添加UILabel来启动屏幕吗?
- 22. Android TranslateAnimation - 将屏幕右侧的图像移动到屏幕上
- 23. 我可以阻止移动Safari浏览器在iPod touch或iPhone上自动旋转屏幕吗?
- 24. 我可以阻止移动Safari浏览器在iPod touch或iPhone上自动旋转屏幕吗?
- 25. Flex/Flash可以记录屏幕吗?
- 26. nag屏幕/ nagware可以接受吗?
- 27. 是否可以在移动设备上的浏览器中锁定屏幕?
- 28. 移动屏幕上的固定元素
- 29. 停止图像屏幕上移动
- 30. 电报客户端可以与移动屏幕键盘进行交互吗?
是不是'[酥料饼presentPopoverFromRect:]'为你工作? – 2011-05-06 21:54:58
现在的问题是,他是否可以移动popOver一旦提交 – Sid 2011-05-06 23:23:34
我不认为它的位置可以直接更改。但是,如果您在不打开它的情况下调用presentPopoverFromRect,它应该“移动”。 – Anna 2011-05-07 00:46:15