キーボードのタッチが後ろに伝搬してしまうバグ対応

More than 1 year has passed since last update.

Issue

iOSには
1. iOSにてキーボードウィンドウを出す
2. ホームボタンなどでアプリをバックグラウンドにする
3. アプリをフォアグラウンドにもどす
と、すると、キーボードの変換などをタッチした時に後ろのビューにタッチが伝搬してしまうというバグがあります。

Action

アプリがフォアグラウンドになるタイミングでUITextEffectsWindowのプロパティをごにょごにょすると後ろのviewのHitTestが発火しなくなります。

- (void)applicationWillEnterForeground:(UIApplication*)application
{
  NSArray* windows = [[UIApplication sharedApplication] windows];
  if ([windows count] > 1)
  {
    for (UIWindow* w in windows) {
      if(!w.opaque && [[NSString stringWithFormat:@"%@", [w class]] isEqualToString:@"UITextEffectsWindow"])
      {
        BOOL hidden = w.hidden;
        // 1度HiddenをYESにする
        w.hidden = YES;
        w.hidden = hidden;
        break;
      }
    }
  }
}

※UITextEffectsWindowはプライベートAPIなのでクラス名でフィルタしてUIWindowオブジェクトとして処理しています。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.