Я думаю, что есть проблема, связанная с textField1
.Во-первых, это, по-видимому, переменная экземпляра, потому что вы обращаетесь к ней по крайней мере из двух методов, но вы освобождаете ее в конце того, что я предполагаю, будет cellForRowAtIndexPath
(ваш первый блок кода здесь), и после этой точки действительно не должнобольше не будет ссылаться на textField1
(даже если он сохраняется в ячейке).Поэтому я не думаю, что textField1
вообще должен быть иваром.Вторая проблема заключается в том, что вы всегда имеете в виду textField1
в textFieldShouldReturn:
, а не textField
.Кто знает, что будет означать textField1
к тому времени, когда вызывается textFieldShouldReturn:
, но textField
всегда будет ссылаться на любое текстовое поле, которое должно возвращаться.
Короче говоря, я думаю, вам нужно изменить это:
[textField1 resignFirstResponder];
на это:
[textField resignFirstResponder];
Я также не уверен, почему вы вызываете textFieldShouldReturn изнутри cellForRowAtIndexPath.Существует также другой метод UITextFieldDelegate, который вы, вероятно, должны использовать вместо добавления своего собственного действия / цели к текстовым полям.
Это может решить вашу главную проблему, если в остальном коде нет других проблем.
РЕДАКТИРОВАТЬ: Позвольте мне попытаться объяснить это еще более четко.У вас есть одно текстовое поле на строку.К тому времени, когда все ваши ячейки будут созданы в cellForRowAtIndexPath, textField1
ссылается только на самое последнее текстовое поле, которое было создано.Ваш textFieldShouldReturn
метод всегда относится к textField1
.Он должен ссылаться на свой аргумент textField
, который соответствует фактическому текстовому полю, которое было первым ответчиком, когда был инициирован возврат.