我正在尝试构建一个触发器插件,它将删除我们输入和表单字段上的表单助手(基于 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 提供此功能!