簡體   English   中英

iPhone接口方向聲明在OS 3.0中不起作用?

[英]iPhone interface orientation statement not working in OS 3.0?

我有以下代碼評估為true,並在OS 2.2.1中向右(或向左)旋轉的括號內運行代碼。 但是,如果為OS 3.0編譯並運行,則同一行代碼的求值結果為true(或大括號)。

我之所以這樣說,是因為在調試器(和日志)中,如果我針對3.0進行了編譯,則大括號內的行會被跳過

這是在textView上的textViewDidBeginEditing方法內部...

在2.x和3.0之間相對於處理方式是否有所改變? 用戶已注意到非調整大小的文本字段是我正在嘗試修復的錯誤...

這不是我的原始代碼,從我的角度來看,我開始認為我應該實現一些委托方法進行輪換...? 但是仍然令我感到困惑的是,該聲明不起作用...

預先感謝您的任何建議...

if((self.interfaceOrientation == UIInterfaceOrientationLandscapeLeft)||(self.interfaceOrientation == UIInterfaceOrientationLandscapeRight))
{
    [self setTextViewHeight:107];
    NSLog(@"inside if self.interfaceorientation...");

}

我不知道為什么,但是這個視圖控制器不知道它是自己的interfaceOrientation。 我認為這與以下事實有關:它位於UITabBarController內部...以及Apple隨3.0更改的“新方法”。

歡迎就該“變化”發表清晰的評論!

不管設備如何旋轉,self.interfaceOrientation的底線始終為1(“向上”)。

我通過更改引用並使用MyTabBarController.interfaceOrientation來解決了這一問題,因為TabBarController的“超類”似乎可以可靠地“知道”設備的方向。

(當然,我必須給此類提供MyTabBarController的引用,這是在MyTabBarController將所有UIViewControllers加載到自身中時完成的。)這已經存在於代碼中了...

有了這個參考,下面的簡單更改就使我可以訪問旋轉的“真實”狀態……並且此代碼在預期的時候運行了……

if ((myTabBarController.interfaceOrientation == UIDeviceOrientationLandscapeLeft) || (myTabBarController.interfaceOrientation == UIDeviceOrientationLandscapeRight)) {
    [self setTextViewHeight:116];

如果要測試是否輸入了此塊,請嘗試在textviewheight分配之前嘗試一條日志語句(如果在賦值錯誤的情況下提前退出,則不行)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM