私はAnthony Chan's questionと同様の問題を抱えています。UIAlertViewがresignFirstResponderを失敗させる原因となります
私のUIAlertViewとやりとりした後、私のアプリの別のビューでキーボードを閉じることができません。それは、アラートが私のUITextFieldのresignFirstResponderの能力を壊しているかのようです。以下で私のUIAlertViewをインスタンス化し、次にdidDismissWIthButtonIndexメソッドを呼び出します。次に、別のUIViewControllerをロードするshowInfoメソッドを呼び出します。
UIAlertView *emailFailAlert = [[UIAlertView alloc] initWithTitle:@"Error"
message:@"error message text."
delegate:self
cancelButtonTitle:@"Not now"
otherButtonTitles:@"Settings", nil];
[emailFailAlert setTag:2];
[emailFailAlert show];
[emailFailAlert release];
'設定' オプションが押されたら、私はこのメソッドを呼び出しています:
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
if ([alertView tag] == 2) {
if (buttonIndex == 1){
[self showInfo:nil];
}
}
}
マイSHOWINFO方法は、以下のコードを経由して、他のViewControllerをロードします。
- (IBAction)showInfo:(id)sender {
FlipsideViewController *fscontroller = [[FlipsideViewController alloc] initWithNibName:@"FlipsideView" bundle:nil];
fscontroller.delegate = self;
fscontroller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:fscontroller animated:YES];
[fscontroller release];
}
このFlipside VCで任意のtextFieldをクリックすると、私は通常通り- (BOOL)textFieldShouldReturn:(UITextField *)textField
と[textField resignFirstResponder]
でキーボードを閉じることができません。私はこのコードを省略しましたが、この質問は長くなっていますが、必要であれば投稿することができます。
興味深いのは、ボタンがクリックされたときに[self showInfo:nil]
コールをコメントアウトして(alertView didDismissWithButtonIndex:メソッドの外側の)テストボタンをクリックして呼び出すと、すべて正常に機能するという点です。ここで何が起こっているのか?
ありがとうございます!
更新:[self performSelector:@selector(showInfo :) withObject:nil afterDelay:.1]を[self showInfo:nil]に変更すると、遅いデバイス(またはシミュレータの外)で破損する可能性があります。それは奇妙な範囲の問題のように感じる。どんな助けもありがとう! – Chazbot
あなたが記述したのと同じ問題に陥る。何らかの理由で、モーダルプレゼンテーションをスケジュールしたり、私の場合は次の実行ループで実行するようにスケジュールしたりすると、問題が解消されます。キーボードは最初のレスポンダとして立ち往生しません。ありがとう! – tyler
私も注意する必要があります - この問題はiOS4にのみ影響するようです。この問題はiOS5 +では表示されません。 – tyler