Должен ли я создавать подклассы в этом случае?

#objective-c #cocoa-touch #uiviewcontroller #uiresponder

#objective-c #cocoa-touch #uiviewcontroller #пользовательский ответчик

Вопрос:

У меня есть UIViewController и UITextView в нем. Я хочу получить метод touchesbegan в UIViewController, но, конечно, он заблокирован в UITextView. Итак, должен ли я создавать подкласс UITextView, чтобы переопределить resignsfirstresponder? Должен быть другой способ, иначе мне придется создать два файла просто для переопределения метода, который просто возвращает NO .

Спасибо.

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

Ответ №1:

Вы могли бы задать свой UITextView.userInteractionEnabled = NO (это можно сделать в interface builder / Xcode 4). Затем касания перейдут к представлению за вашим UITextView. Вы могли бы использовать UIControl вместо UIView для представления вашего контроллера представления, если вы хотите перехватывать касания к представлению вашего контроллера представления.

Можете ли вы рассказать нам больше о взаимодействии, которое вы пытаетесь создать?

Комментарии:

1. Спасибо за наш ответ. Я попробую решение с поддержкой пользовательского взаимодействия, которое вы предоставили. Кроме того, я обновлю свой вопрос дополнительной информацией. Еще раз спасибо.

2. Это все еще не передает касание контроллеру представления.

3. касания будут передаваться в представление контроллера представления, а не в сам контроллер представления.

4. (но отключение взаимодействия с пользователем сделает ваш uitextview недоступным для прокрутки.) похоже, вам, возможно, придется наложить представление на весь экран, чтобы перехватить все касания, а затем передать эти касания в представления за вашим наложенным представлением.

5.для этого вы можете переопределить -touchesBegan:withEvent: touchesEnded:withEvent: , touchesMoved:withEvent: и touchesCanceled:withEvent: в своем представлении overlay.