Я хочу реализовать UITextFieldDelegate
в классе, отличном от UIViewController
, но когда я это делаю, я получаю исключение EXC_BAD_ACCESS
во время выполнения.Реализация UITextFieldDelegate в отдельном классе
Так почему же эту работу:
class MyViewController : UIViewController, UITextFieldDelegate
{
...
func createUI()
{
let someTextField: UITextField = UITextField()
someTextField.delegate = self
...
}
func textFieldShouldReturn(textField: UITextField!) -> Bool
{
textField.resignFirstResponder()
return true;
}
}
Но это вовсе не так:
class MyViewController : UIViewController
{
...
func createUI()
{
let someTextField: UITextField = UITextField()
someTextField.delegate = MyTextFieldDelegate()
...
}
}
class MyTextFieldDelegate : NSObject, UITextFieldDelegate
{
func textFieldShouldReturn(textField: UITextField!) -> Bool
{
textField.resignFirstResponder()
return true;
}
}
Попробуйте поместить вновь созданный делегат в «сильную» переменную класса. Возможно, свойство «присваивать» поля делегата вызывает его освобождение сразу после его создания. –