- 我有一個UIView。
- 這個UIView有一個UIButton,點擊後會出現一個UIAlertView。
- 在這個UIAlertView我有另一個UIButton,當點擊調用buttonClicked:
- 在這個buttonClicked:方法中,我調用了presentPopoverFromRect裏面的自定義視圖。 (hourKeyboard是自定義視圖)presentPopoverFromRect在旋轉中顯示橫向跳動
-(void)buttonClicked:(id)sender
{
if(self.hourKeyboard==nil)
{
self.hourKeyboard = [[HourKeyboardViewController alloc] init];
self.hourKeyboardPopover = [[UIPopoverController alloc] initWithContentViewController:self.hourKeyboard];
}
[self.hourKeyboardPopover presentPopoverFromRect:[sender bounds] inView:sender permittedArrowDirections:UIPopoverArrowDirectionLeft animated:YES];
}
在正常的人像模式下,這個效果很好。彈出窗口只在按鈕的右側生成,箭頭正好指向左側的按鈕。
還有那棱2個問題:
1)雖然這酥料餅是可見的,當你旋轉屏幕的酥料餅稍不正確旋轉(不重新定位它自己的x和y位置)
2)如果酥料餅沒有被顯示。如果旋轉屏幕,然後調用「buttonClicked」,則彈出窗口會出現,但是,它會顯示在按鈕上方,箭頭指向按鈕的「向下」(技術上與側向彈出視圖相關)。如果你關閉它,旋轉屏幕,然後調用「buttonClicked」,彈出窗口現在看起來是顛倒的,按鈕指向按鈕的「右側」(再次,技術上與左右彈窗視圖相關)!重複一遍,然後再次右側。
- = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = -
我的想法:
1)我相信我可以重新定位x和y,但是,我也讀過你應該關閉popover並在輪換時重新放置。我會看看如果我能得到第一個工作,但我更關心第二個問題。
2)我不知道如何解決這個旋轉問題。看起來,當你旋轉到風景沒有彈出窗口是可見的。然後你打電話給presentPopoverFromRect,彈出窗口是用iPad創建的,認爲它仍然是在縱向視圖中。這就是它給予的行爲,但是,我不知道如何讓iPad不犯這個錯誤。
- = - = - = - = - = - = - = - = - =再次
感謝您的幫助,您可以提供!
- = - = -
稍向更新:
1)這是很容易只是拒絕來自上轉動主視圖的酥料餅。這似乎是每個人處理這個問題的一般方式。
2)試行各種事情諸如改變幀,使用CGAffineTransformMakeRotation,和其他...,但沒有運氣迄今
- = - = -
另一個更新:
2 )經過大量測試後,它似乎是UIAlertView的直接問題。如果我將視圖放在UIAlertView中(目前正在執行),AlertView不會告訴彈出窗口屏幕旋轉...因此產生問題
看起來像解決此問題的唯一方法是放棄UIAlertView完全。我不會顯示UIAlertView,而是手動禁用各種背景視圖(如Alert View正在執行),然後顯示與AlertView類似的自定義UIView。從那裏,我應該能夠顯示popover沒有任何問題。我會讓你知道結果如何。
- = - = - = - = - = - = - = -
最終解決方案:
我最終只是創造我自己的看法,並具有視圖模仿UIAlertView中。然後,當我產生popover時,我將它放在根視圖控制器中。工作得更好,但需要更多的工作,因爲我必須手動創建自己的視圖,而不是預製的UIAlertView。無論哪種方式,顯然UIAlertView無法告訴UIPopoverover子視圖它的旋轉方式。
是的,這就是我正在做的解決問題1的方法。然而,問題2是當我試圖再次顯示彈出窗口時,它現在顯示橫向(與應該是90度)的彈出窗口。 – Highrule
編輯了答案。 – Sulthan
我在我的主要文章中發佈了我的最終解決方案(提出了自己的觀點來模仿uialertview),但是這篇文章中的信息是我對問題存在原因的總體思考。 – Highrule