是否可以在屏幕上顯示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