У UISearchBar
нет метода делегата для этого события. Вы можете почти получить то, что хотите, реализовав метод textDidChange:
делегата обратного вызова и проверив наличие пустой строки.
Я не рекомендую это, но есть другой возможный способ. UISearchBar
состоит из UITextField, в котором есть метод делегата, который вызывается, когда пользователь нажимает кнопку очистки (textFieldShouldClear:
). Вы можете получить UITextField
, пройдя дочерние представления UISearchBar
:
(это в контексте производного UISearchBar
класса)
- (UIView*) textField
{
for (UIView* v in self.subviews)
{
if ( [v isKindOfClass: [UITextField class]] )
return v;
}
return nil;
}
отсюда вы могли бы переназначить делегата UITextField
для вашей собственной реализации, заботясь о том, чтобы переадресовывать вызовы делегата старому делегату. Таким образом, вы могли бы перехватить textFieldShouldClear:
. Или, если выяснится, что UISearchBar
является делегатом для UITextField
, который в нем содержится, вы можете быстро переключиться на вызов textFieldShouldClear: ... Не идеально, ясно, но технически выполнимо.