这个最小的 UITextFieldDelegate 实现中缺少什么导致崩溃?

What is missing from this minimal UITextFieldDelegate implementation, to cause crashing?

在模拟器中选择文本字段时发生崩溃。调试器似乎没有告诉我任何有用的信息。

import UIKit
class TextField: NSObject, UITextFieldDelegate {}

在视图控制器中:

override func viewDidLoad() {
    super.viewDidLoad()
    textField.delegate = TextField()
}
@IBOutlet weak var textField: UITextField! // assigned in IB.

您不能将委托设置为 TextField()

只需将委托设置为自己,因为您在 class:

中使用了 UITextFieldDelegate
textField.delegate = self

UITextField.delegate 是 unowned,因此委托在 viewDidLoad 返回后被释放。

改为将代理分配给 属性

首先添加 customTextFieldDelegate 作为 属性

var customTextFieldDelegate = TextField()

并在 ViewDidload

self.textField.delegate = self.customTextFieldDelegate