3

入力フィールドとフォームフィールドのフォームアシスタント(「次へ」と「前へ」ボタンでフォームをナビゲートするのに役立つiOS Webビューキーボード上にあるばかげたツールバー)を削除するトリガープラグインを構築しようとしています。

これが私が移植したいPhoneGapのために提供されたハッキーな解決策です。

この質問は、前述のPhoneGapソリューションが機能することを前提として、プラグインシステムを使用してTriggerにこれを適切に実装するために必要な手順に関するものです。

グローバルに1回だけでなく、キーボードがロードされるたびに電話をかける必要があると思います。

4

2 に答える 2

2

私はこれを自分で実装することに少し挑戦しましたが、何らかの理由でUIKeyboardWillShowNotificationイベントが発生しません。幸いなことに、別のイベントUIKeyboardCandidateCorrectionDidChangeNotificationが適切な時点で発生します。

このコードをプラグインの API メソッドにドロップし、キーボードが表示される前に (1 回) 呼び出されることを確認すると、機能するはずです。

[[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];
                }
            }
        }
    }
}];
于 2012-10-19T08:27:46.910 に答える