UIScrollView touchesBegan

Одна вещь, которую я сделал в прошлом - если я расширяю класс, я попытаюсь следовать их соглашениям. Например, при работе с Платформой Spring, у меня будут свои Классы контроллера MVC в пакете названными com.mydomain.myapp.web.servlet.mvc, Если я не расширю что-то, что я просто иду с тем, что является самым простым. com.mydomain.domain для Объектов области (хотя, если у Вас есть тонна объектов области, этот пакет мог бы стать немного громоздким). Для зависящих от домена констант я на самом деле поместил их как общедоступные константы в самом связанном классе. Например, если я имею "членский" класс и имею максимальную постоянную длину имени элемента, я поместил его в членский класс. Некоторые магазины делают отдельный класс Констант, но я не вижу значение в смешивании несвязанных чисел и строк в единый класс. Я видел, что некоторые другие магазины пытаются решить эту проблему путем создания ОТДЕЛЬНЫХ классов Констант, но это просто походит на пустую трату времени, и результат слишком сбивает с толку. Используя эту установку, крупный проект с несколькими разработчиками будет копировать константы повсеместно.

10
задан samvermette 6 November 2009 в 07:21
поделиться

3 ответа

Думаю, для этого вам нужно создать подкласс UIScrollView.

touchesBegan: withEvent: отправляется только в подклассы UIView. Вы, вероятно, реализуете touchesBegan: withEvent: в своем контроллере, верно? Если это так, оттуда это не сработает ...

В качестве альтернативы, если вы поместите подкласс UIView (который вы написали) в свой UIScrollView, вы также можете оттуда перехватить событие touchesBegan (но только когда пользователь касается это конкретное подвид). UIScrollView по умолчанию передает касания своим подпредставлениям (см. TouchesShouldBegin: withEvent: inContentView: в UIScrollView).

6
ответ дан 3 December 2019 в 13:40
поделиться

Вы должны добавить touchesBegan: withEvent: в свой UIScrollView, а не в UIScrollViewDelegate. UIScrollView - это подкласс UIResponder, который имеет сенсорные события.

0
ответ дан 3 December 2019 в 13:40
поделиться

Вы также можете реагировать на эти события в вашем контроллере. Чтобы это работало, вы должны определить эту функцию (в вашем контроллере):

- (BOOL)canBecomeFirstResponder {
    return YES;
}

Затем в 'viewDidAppear' вам нужно вызвать 'beginFirstResponder':

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    [self becomeFirstResponder];
5
ответ дан 3 December 2019 в 13:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: