iOS8键盘混乱,为什么root视图的hitTest方法会被触发?

时间:2014-09-21 09:54:29

标签: ios8 uikeyboard

触摸键盘区域时,将触发根视图的方法:

  • (UIView *)hitTest:(CGPoint)指向withEvent:(UIEvent *)事件

我很困惑,有人可以帮助我吗?

2 个答案:

答案 0 :(得分:2)

在AppDelegate的applicationWillEnterForeground中,输入此代码。 它对我有用,特别是KLCPopup

- (void)applicationWillEnterForeground:(UIApplication *)application{
// Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.

if (!IS_OS_8_OR_LATER) return;
[UIApplication.sharedApplication.windows enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(UIWindow *w, NSUInteger idx, BOOL *stop) {
    if (!w.opaque && [NSStringFromClass(w.class) hasPrefix:@"UIText"]) {
        // The keyboard sometimes disables interaction. This brings it back to normal.
        BOOL wasHidden = w.hidden;
        w.hidden = YES;
        w.hidden = wasHidden;
        *stop = YES;
    }
}];}

答案 1 :(得分:0)

此问题将出现在:

1,你改变了keywindow的rootViewController;

2,输入背景并返回前景;

因此,恢复UITextEffectsWindow可以在每次更改后修复它。

void TSRestoreKeyboardWindow(void)
{
    if (!TSSystemVersionGreaterThanIOS8()) return;
    [UIApplication.sharedApplication.windows enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(UIWindow *w, NSUInteger idx, BOOL *stop) {
        if (!w.opaque && [NSStringFromClass(w.class) hasPrefix:@"UIText"]) {
            // The keyboard sometimes disables interaction. This brings it back to normal.
            BOOL wasHidden = w.hidden;
            w.hidden = YES;
            w.hidden = wasHidden;
            *stop = YES;
        }
    }];
}