當我打開多個UIAlertViews時,我的鍵盤自動關閉然後重新打開,出現奇怪的問題。如果我有一個鍵盤(來自單獨的UITextField)並顯示一個UIAlertView,那麼在解除該警報後,我打開另一個(在didDismissWithButtonIndex中打開第二個)。當我解僱第二個人時,它解散了鍵盤,然後返回。如果我在連續超過2條警報的情況下嘗試此操作,它將在第二條警報解除後仍會關閉我的鍵盤,但直到最後一條警報解除爲止纔會顯示。問題在於鍵盤委託函數沒有被調用,所以我無法迴應它被解僱。我有其他的UI元素(文本框和圖像),當鍵盤打開時會移動,所以當它關閉時,這些元素會浮在屏幕上,看起來很奇怪。任何想法爲什麼該鍵盤會自動解散?謝謝多個UIAlertViews打開後鍵盤解散
順便說一下,我使用NSDictionary對象的NSMutableArray隊列警報,如果已經顯示警報需要顯示。我一次不會創建並顯示超過1個警報。
編輯:這裏是示例代碼。如果您運行此操作,則在您解除「1」後,您會看到兩個警報均打開(0和1),您會在其下看到「0」。在您解除'0'之後,您會看到我的意思 - 它們的鍵盤會暫時關閉並打開,但不會調用委託功能。如果您將我設置爲高於2的值,您會看到關閉鍵盤在關閉第二次提醒後仍然關閉,但會一直關閉,直到最後一次提醒被解除。我也試過只打開一個UIAlert,並且從隊列中一個一個地打開其他人,因爲每個人都被解僱,並且仍然注意到同樣的行爲。有任何想法嗎?
編輯:一些更多的挖掘後,我發現,如果我註冊的通知UIKeyboardDidShowNotification和UIKeyboardDidHideNotification它們實際上是當鍵盤被自動解僱和呈現時觸發。我仍然想知道底層API中是什麼導致它甚至發生,所以希望能夠避免它。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(0, 100, 320, 48)];
[textField setDelegate:self];
[textField setBackgroundColor:[UIColor redColor]];
[window addSubview:textField];
[textField release];
[self.window makeKeyAndVisible];
return YES;
}
- (BOOL)textFieldShouldReturn:(UITextField *) textField{
NSLog(@"textFieldShouldReturn called with %@", textField);
[textField resignFirstResponder];
return YES;
}
-(void) textFieldDidBeginEditing:(UITextField *)textField
{
NSLog(@"textFieldDidBeginEditing called with %@", textField);
for (int i=0; i< 2; i++) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle: @"test" message: [NSString stringWithFormat:@"%d", i] delegate:self cancelButtonTitle:NSLocalizedString(@"OK",@"") otherButtonTitles:nil];
[alert show];
[alert release];
}
}
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField
{
NSLog(@"++++ textFieldShouldEndEditing %@", textField);
return YES;
}
-(void) textFieldDidEndEditing:(UITextField *)textField
{
NSLog(@"++++ textFieldDidEndEditing %@", textField);
}
如果你也提供你的代碼,它會很棒...... – Maulik