我正在尝试构建一个触发器插件,它将删除我们输入和表单字段上的表单助手(基于 ios webview 键盘的愚蠢工具栏,可帮助您使用“下一个”和“上一个”按钮导航表单)。
这是为 PhoneGap 提供的一个 hacky 解决方案,我想将其移植过来。
这个问题涉及我需要采取的步骤,以使用他们的插件系统为 Trigger 正确实施,假设上述 PhoneGap 解决方案将起作用。
我认为每次加载键盘时都需要进行调用,而不仅仅是全局调用一次。
我正在尝试构建一个触发器插件,它将删除我们输入和表单字段上的表单助手(基于 ios webview 键盘的愚蠢工具栏,可帮助您使用“下一个”和“上一个”按钮导航表单)。
这是为 PhoneGap 提供的一个 hacky 解决方案,我想将其移植过来。
这个问题涉及我需要采取的步骤,以使用他们的插件系统为 Trigger 正确实施,假设上述 PhoneGap 解决方案将起作用。
我认为每次加载键盘时都需要进行调用,而不仅仅是全局调用一次。
我刚刚自己实现了这个,由于某种原因,该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];
}
}
}
}
}];
表单助手模块现在作为 Trigger.io v2.0 的一部分提供: https ://trigger.io/modules/damn_you_form_assist/current/
感谢 Fetchnotes 和 @Horak 提供此功能!