7
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Healthkitで初回のrequestAuthorization後に画面がタップできなくなる問題とその対処

Last updated at Posted at 2018-08-01

発生を確認した環境

  • Xcode 9.4.1
  • Swift 4.1
  • iOS11.4

現象

Healthkitで初回のrequestAuthorization完了後に画面がタップできなくなる問題が発生しました。


let healthStore = HKHealthStore()

healthStore.requestAuthorization(toShare: shares, read: reads, completion: { success, error in

  // ここから画面がタップできなくなる
}

原因

Healthkitが表示したUIWindowが、認証完了後も消えず前面に重なって表示され続けているためでした。

window.png

対処

このWindowは不要と思われるので削除したいところですが、まっとうに削除する方法がないため、以下のようにアプリのメインであるwindowとHealthkitが表示したwindowのwindowLevelを入れ替えることで対処しました。


DispatchQueue.main.async {
    
    for window in UIApplication.shared.windows {
        if window.windowLevel == 999.0 {
            window.windowLevel = 0.0
        }
    }
    
    if let appDelegate = UIApplication.shared.delegate {
        appDelegate.window??.windowLevel = 1.0
    }
}
7
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?