web-dev-qa-db-ja.com

iOS 13以降、UIAlertControllerは表示されなくなりました

ユーザーが触覚フィードバック設定を更新できるUIAlertをポップアップする次の関数があります。

- (void)requestHapticSetting{
    UIWindow *alertWindow = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
    alertWindow.rootViewController = [[UIViewController alloc] init];
    alertWindow.windowLevel = UIWindowLevelAlert + 1;
    [alertWindow makeKeyAndVisible];

    if(isHapticOn){
        hapticMessage = @"Haptic feedback is currently\nturned ON.\nPlease update preference.";
    }
    else {
        hapticMessage = @"Haptic feedback is currently\nturned OFF.\nPlease update preference.";
    }

    UIAlertController* alert = [UIAlertController alertControllerWithTitle:@"Haptic Setting"
                                                                   message:hapticMessage
                                                            preferredStyle:UIAlertControllerStyleAlert];

    UIAlertAction* onAction = [UIAlertAction actionWithTitle:@"TURN ON" style:UIAlertActionStyleDefault
                                                     handler:^(UIAlertAction * action) {
                                                         [self saveHapticSettingOn];
                                                     }];

    UIAlertAction* offAction = [UIAlertAction actionWithTitle:@"TURN OFF" style:UIAlertActionStyleDefault
                                                      handler:^(UIAlertAction * action) {
                                                          [self saveHapticSettingOff];
                                                      }];
    [alert addAction:offAction];
    [alert addAction:onAction];
    [alertWindow.rootViewController presentViewController:alert animated:YES completion:nil];
}

私はこれを数年間使用してきましたが、うまくいきます。

ただし、iOS 13に更新して最新のXcodeに更新しているため、警告が閉じてから1秒未満でポップアップします。

これを実現するために何が変更されましたか?前もって感謝します。

2
Reanimation

新しいUIWindowSceneとiOS 13.XとSwift 5.Xをサポートするヘルパークラスを作成しました。

https://github.com/emraz/ERAlertController

0
emraz