Почему textFieldDidEndEditing: не быть названным?

Если Вы говорите о значении по умолчанию-init метод тогда, Вы не можете. Это наследовано от NSObject, и каждый класс ответит на него без предупреждений.

Вы могли создать новый метод, сказать-initMyClass и поместить его в частную категорию как Matt, предлагает. Тогда определите значение по умолчанию-init метод для или повышения исключения, если это называют или (лучший) вызов частным-initMyClass с некоторыми значениями по умолчанию.

Одна из главных причин люди, кажется, хотят скрыться, init для одноэлементные объекты . Если это так, тогда Вы не должны скрывать-init, просто возвратить одноэлементный объект вместо этого (или создавать его, если это еще не существует).

12
задан Cœur 14 January 2019 в 04:06
поделиться

2 ответа

Как упоминалось в одном из комментариев, я попытался воспроизвести более простую версию того, что я пытался сделать, с помощью приложения HelloWorld, и это сработало с первой попытки, без проблем, как и ожидается. Столкнувшись с этим, я начал немного задаваться вопросом.

Где-то во всех поисках ответа на эту проблему я наткнулся на ссылку, где у человека возникла проблема с событиями, которые не запускались с помощью кнопки , и оказалось, что проблема была связана с представлением, в котором была размещена кнопка, и с этим представлением, имеющим другое подпредставление как одноранговое по отношению к кнопке, и это подпредставление каким-то образом поглощало события, а не позволяло им идти туда, где они был направлен. Сценарий был не совсем таким, как у меня, но звучал достаточно близко, чтобы провести расследование. Несмотря на все полученные здесь прекрасные советы, ни один из них еще не принес плодов.

Вчера вечером я решил полностью воссоздать файл пера с нуля (сначала сделал копию того, что у меня было), и я заставил его работать. Ключевое отличие, похоже, состоит в том, что в исходном нерабочем файле пера я перетащил TableViewController из палитры, а затем изменил его тип на свой подкласс PZTableViewController . Когда я сделал то же самое со своим новым пером, события не сработали. Если, с другой стороны, я удалил перетаскиваемый TableViewController , а вместо этого просто перетащил NSObject и изменил его класс на PZTableViewController и все подключил, все это «просто работало».

Я попытаюсь найти ссылку, которая заставила меня задуматься об этом, и опубликую ее либо в качестве редактирования, либо в качестве комментария.

Это также не полный ответ, потому что я еще не понимаю разницы между from-the-palette TableViewController и моим подклассом. Когда я это выясню, я обновлю этот ответ путем редактирования или комментария.

1
ответ дан 2 December 2019 в 19:32
поделиться

textFieldDidEndEditing запускается, когда текстовое поле отказывается от своего статуса первого респондента, в то время как textFieldShouldReturn запускается при нажатии кнопки возврата.

Он звучит как будто ваше текстовое поле никогда не отказывается от firstResponder. Вы можете проверить это довольно легко, поместив некоторые отладочные данные (как предлагается в комментариях) и просто выйдя из текстового поля одним касанием - например, начните печатать, а затем просто коснитесь вне поля, чтобы заставить его уйти в отставку firstResponder.

Не конечно, если это очень помогает, но это звучит как странный случай, с которым вы столкнулись.

6
ответ дан 2 December 2019 в 19:32
поделиться