3

iOS 9 で非常に残念なバグに遭遇しました。 を設定するUITextField.inputAccessoryViewと、そのビューviewWillDisappear:viewDidDisappear:メソッドが時期尚早に (キーボードのアニメーションが終了した直後に) 呼び出されるようです。

問題を示すためにgifを含めました。ビューが赤くなるのは、そのviewWillDisappear:メソッドが呼び出されたときです。奇妙なことに、キーボードを閉じるviewWillDisappear:と、viewDidDisappear:再び呼び出されます。ただし、viewWillAppear:一度だけ呼び出されます。

誰かが同様の問題に遭遇しましたか? と を使用viewWillDisappear:viewDidDisappear:てコントローラーを緩めますが、明らかに初期の呼び出しが望ましくない動作を引き起こしています。

注: 以下は、アクセサリ ビューを作成して設定する方法です。AccessoriesViewController.m には特筆すべき点はありません。クリーンなプロジェクトで問題を再現しました。また、iOS 8 には存在しません。

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
    if (self.textField.inputAccessoryView == nil) {
        self.textField.inputAccessoryView = self.vc.view;
    }
    return YES;
}

- (UIViewController *)vc {
    if (!_vc) _vc = [[AccessoryViewController alloc] init];
    return _vc;
}

ここに画像の説明を入力

4

1 に答える 1

0

AccessoryViewControllerViewControllerに強く保存されていません。クリーンアップされないように、インスタンス変数に格納します。

私の解決策(スウィフト):

var accessoryView: AccessoryViewController! // works

weak var accessoryView: AccessoryViewController!

于 2015-09-10T16:42:57.980 に答える