如何使用Trigger.IO隐藏带有iOS本机插件的Form Assistant?

时间:2012-10-18 01:30:17

标签: trigger.io

我正在尝试构建一个Trigger插件,它将删除表单助手(依赖于ios webview键盘的傻工具栏,可帮助您在输入和放大器上使用“下一个”和“上一个”按钮导航表单) ;表格领域。

Here是为PhoneGap提供的一个hacky解决方案,我想移植一下。

这个问题涉及我需要采取的步骤,使用他们的插件系统正确实现Trigger,假设上述PhoneGap解决方案可行。

我认为每次键盘加载时都需要进行调用,而不是全局一次。

2 个答案:

答案 0 :(得分:2)

我自己刚刚实现了这一点,由于某种原因UIKeyboardWillShowNotification事件并没有为我开火,幸运的是另一个事件UIKeyboardCandidateCorrectionDidChangeNotification在正确的点上发射。

如果您将此代码放在插件的API方法中,并确保在显示键盘之前调用它(一次),它应该可以正常工作。

[[NSNotificationCenter defaultCenter] addObserverForName:@"UIKeyboardCandidateCorrectionDidChangeNotification" object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *note) {
    UIWindow *keyboardWindow = nil;
    for (UIWindow *testWindow in [[UIApplication sharedApplication] windows]) {
        if (![[testWindow class] isEqual:[UIWindow class]]) {
            keyboardWindow = testWindow;
        }
    }

    // Locate UIWebFormView.
    for (UIView *possibleFormView in [keyboardWindow subviews]) {
        // iOS 5 sticks the UIWebFormView inside a UIPeripheralHostView.
        if ([[possibleFormView description] rangeOfString:@"UIPeripheralHostView"].location != NSNotFound) {
            for (UIView *subviewWhichIsPossibleFormView in [possibleFormView subviews]) {
                if ([[subviewWhichIsPossibleFormView description] rangeOfString:@"UIWebFormAccessory"].location != NSNotFound) {
                    [subviewWhichIsPossibleFormView removeFromSuperview];
                }
            }
        }
    }
}];

答案 1 :(得分:1)

表单助手模块现在作为Trigger.io v2.0的一部分提供: https://trigger.io/modules/damn_you_form_assist/current/

感谢Fetchnotes和@Horak提供此功能!