textViewDidBeginEditing не срабатывает из-за масштабирования

У меня есть подкласс UIViewController, который действует как делегат для UITextView. Я реализовал textViewDidBeginEditing, чтобы отобразить кнопку «Готово», чтобы закрыть текстовое представление... все хорошо... за исключением того, что когда текстовое представление имеет текст и не находится в режиме редактирования, если пользователь держит палец в текстовом представлении, что вызывает текст, который нужно увеличить с помощью увеличительного стекла, появляется клавиатура, но textViewDidBeginEditing не срабатывает.

Я попытался обойти это, внедрив методы делегата UIScrollView viewForZoomingInScrollView и scrollViewDidEndZooming, но я вообще не могу заставить их срабатывать для меня.

Я пробовал играть со свойствами MinimumZoomScale и maxZoomScale, чтобы отключить масштабирование... безрезультатно.

На данный момент я понятия не имею, что делать дальше, или связана ли моя ошибка с обнаружением методов делегата UIScrollView с моей основной проблемой. Я не уверен, какой код я мог бы опубликовать, который был бы полезен... метод textViewDidBeginEditing очень минимален и отлично работает в обычных обстоятельствах. Назначение делегата UITextView выполняется с подключением в Interface Builder к контроллеру (владельцу файла).


person Community    schedule 17.06.2009    source источник


Ответы (1)


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

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardNotificationShow:) name:UIKeyboardWillShowNotification object:nil];  

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardNotificationHide:) name:UIKeyboardWillHideNotification object:nil];  
person Ron Srebro    schedule 18.06.2009
comment
спасибо за предложение ... моя проблема с этим обходным путем заключается в том, что у меня есть несколько текстовых представлений в приложении, и я не уверен, как определить, какое из них вызвало уведомление. - person ; 18.06.2009
comment
Теперь это работает для меня после добавления проверки (self.view.window! = NULL), чтобы убедиться, что отображается представление контроллера. - person ; 18.06.2009