Вы можете использовать addTarget:action:forControlEvents:
с UIControlEventValueChanged
(например: [textfield addTarget:self action:@selector(usernameChanged:) forControlEvents:UIControlEventValueChanged
). Это сообщит вам ПОСЛЕ изменения текста (поэтому, когда вы получите usernameChanged:
, у вас будут последние изменения).
Вероятно, это хорошая идея, что вместо того, чтобы отправлять запрос на сервер каждый раз, когда имя пользователя изменяется, вы либо отправляете запрос, когда текстовое поле теряет заголовок, либо когда проходит некоторое время после последнего изменения (вы можете использовать NSTimer
для это).
Вы должны использовать один асинхронный запрос. Если запрос активен и текстовое поле снова редактируется, вы должны отменить запрос и установить его равным nil (поскольку нет смысла проверять старое имя пользователя). Если запрос выполнен успешно, отображается значок или все, что вы хотите сделать, когда получаете результат с сервера.
Изменить:
Не уверен, что UIControlEventValueChanged
работал на предыдущих версиях iOS или это была ошибка с моей стороны, но, похоже, больше не работает. UIControlEventEditingChanged
следует использовать вместо.