7

UITextField を UIAlertController に追加しましたが、発生しshouldChangeCharactersInRangeません。なんで?デリゲートを設定しました。

let alertController = UIAlertController(title: "", message: "xxx", preferredStyle: .Alert)

self.presentViewController(alertController, animated:true, completion:nil)
let textField = UITextField()
textField.delegate = self
alertController.addTextFieldWithConfigurationHandler(nil)

そして同じクラスで、デリゲート:

func textField(textField: UITextField!,
    shouldChangeCharactersInRange range: NSRange,
    replacementString string: String!) -> Bool {
4

2 に答える 2

13

デリゲートを設定するテキスト フィールドは、アラート コントローラーに追加されるテキスト フィールドと同じではありません。基本的に、UITextField の新しいインスタンスを作成していますが、フレームを与えたり、ビュー階層に追加したりすることはありません。同時に、addTextFieldWithConfigurationHandler()テキスト フィールドをアラート コントローラーに追加するために使用していますが、このテキスト フィールドのデリゲートを設定していません。これがあなたが望むものだと思います:

let alertController = UIAlertController(title: "", message: "xxx", preferredStyle: .Alert)

alertController.addTextFieldWithConfigurationHandler {[weak self] (textField: UITextField!) in
    textField.delegate = self
}

self.presentViewController(alertController, animated:true, completion:nil)
于 2014-07-20T17:19:06.323 に答える