iOS 8の後、実装をUIAlertViewの代わりにUIAlertControllerに変更すると、頭がおかしくなります。UIAlertController dismiss is slow
ボタンをクリックした後にUIが応答するまで、解雇には1秒程度の時間がかかります。これはユーザーが何か間違っていると思うことを意味します。
私はこれに苦しんでいる唯一の人ですか?これはいくつかのアプリにまたがっており、これほど簡単な実装では本当です。私はこれを新しい空のプロジェクトで試しました。
- (IBAction)showAlertView {
[[[UIAlertView alloc] initWithTitle:@"test" message:@"test" delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil] show];
}
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
NSLog(@"this is fast");
}
-(IBAction)showAlert {
UIAlertController *controller = [UIAlertController alertControllerWithTitle:@"test" message:@"test" preferredStyle:UIAlertControllerStyleAlert];
[controller addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
NSLog(@"this is slow");
}]];
[self presentViewController:controller animated:NO completion:nil];
}
ボタンをクリックすると、何かがコンソールに出力されるまでに約1秒間の遅延が生じます。アラートの発表はまったく遅れていません。
編集:タイミングが近ければ、それはおそらく700msとよく似ていますので、完全な秒はありませんが、瞬間的なものには長すぎます。
UIからの応答が遅いのは、多くの場合、バックグラウンドスレッドでUIタスクを実行することによって発生します。非同期補完ハンドラからこのアラートを表示していますか? UIAlertControllerには一般的な問題はありません。 – Paulw11
これはそのままのコードです。明示的なスレッドでは何も実行されません。上記のコードをIBActionにバインドして、コントローラを表示するためのボタンをクリックすると、まだ遅くなります。すべてのアプリで使用するたびにこのようになっています。私は非常に混乱しています。 – nickdnk
これは、View Controllerをアニメーション化したとき(例:垂直をカバーする)とほぼ同じように、解雇を待つようです。解雇のアニメーションがなければ、私はここで話しているのと同じ遅延を得る。 – nickdnk