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オブジェクトとして処理しています。