我使用的子類UIAlertView中窗口在我的應用程序(我知道這是對蘋果的指導方針,但是,所以它不是一個問題,它不會被提交給AppStore的)登錄提示。定位子類UIAlertView中窗口,屏幕鍵盤上的iOS
添加文本字段和屏幕上的窗口位置的代碼看起來是這樣的:
- (id)initWithTitle:(NSString *)title delegate:(id)delegate
{
if (self = [super initWithTitle:title message:@"\n\n\n" delegate:delegate cancelButtonTitle:@"Cancel" otherButtonTitles:@"Login", nil]) {
UITextField *loginTF = [[UITextField alloc] initWithFrame:CGRectMake(12.0, 55.0, 260.0, 25.0)];
// text field settings removed for code clarity
[self addSubview:loginTF];
self.loginTextField = loginTF;
[loginTF release];
UITextField *passwordTF = [[UITextField alloc] initWithFrame:CGRectMake(12.0, 85.0, 260.0, 25.0)];
// text field settings removed for code clarity
[self addSubview:passwordTF];
self.passwordTextField = passwordTF;
[passwordTF release];
CGAffineTransform translate = CGAffineTransformMakeTranslation(0.0, 90.0);
[self setTransform:translate];
}
return self;
}
問題是與setTransform
電話:
在iOS 3.X:
- 無setTransform
:窗口在屏幕上水平和垂直居中顯示,屏幕上的鍵盤部分顯示在屏幕上方 - 因此整個窗口不可見
- 與setTransform
:窗口不顯示播放高出90個像素,因此在顯示屏幕鍵盤時可以看到整個屏幕。
上的iOS然而4.x的:
- 無setTransform
:顯示窗口完全正常(可見屏幕上鍵盤以上)
- 與setTransform
:被部分地顯示在屏幕的頂部邊界上面的窗口(90像素太高)。
這個問題最好的解決方案是什麼?檢測iOS版本並有條件地調用setTransform
?或者這太難看了,有更好的方法嗎?
我真的很喜歡這個應用程序可用於儘可能廣泛的iOS設備。這就是爲什麼我要爲iOS3.x編譯它 - 那裏仍然有大量的iOS3設備。我想我會去接受有條件的'setTransform'調用。謝謝。 – grzaks 2010-11-15 13:40:58