Создание подклассов UIScrollView / UIScrollViewDelegate - PullRequest
0 голосов
/ 04 апреля 2011

Я пытаюсь создать свой собственный пользовательский UIScrollView, чтобы я мог передать сенсорные события от него объекту делегата, который имеет логику для рисования в виде изображения в представлении прокрутки.

Если я удаляю делегатапеременная и свойство из интерфейса класса, он прекрасно работает как обычный вид прокрутки.Когда я делаю это, мой пользовательский протокол-делегат создает, но не передает сообщения ..

Любая помощь приветствуется

@class DrawableScrollView;

@protocol DrawableScrollViewDelegate <UIScrollViewDelegate>

- (void)touchesBegan:(DrawableScrollView *)drawableScrollView touches:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesMoved:(DrawableScrollView *)drawableScrollView touches:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesEnded:(DrawableScrollView *)drawableScrollView touches:(NSSet *)touches withEvent:(UIEvent *)event;

@end

@interface DrawableScrollView : UIScrollView {

    id<DrawableScrollViewDelegate> delegate;

}

@property (nonatomic, assign) IBOutlet id<DrawableScrollViewDelegate> delegate;

@end

Ответы [ 2 ]

1 голос
/ 04 апреля 2011

Скорее всего, методы UIScrollView, которые передают сообщения делегата, используют (частный) ивар для доступа к делегату, вместо того, чтобы каждый раз использовать средство доступа к свойству.Поэтому, когда вы переопределяете их своим собственным свойством делегата, базовый делегат scrollview никогда не устанавливается.

Одним из способов будет использование реализации UIScrollView delegate и setDelegate: для хранения вашего делегата, вместоили в дополнение к использованию вашего собственного ивара.Другим было бы переименовать вашу собственность, чтобы избежать конфликта.Третье - заставить вид внутри прокрутки реагировать на прикосновения, а не связываться с самим прокруткой.

0 голосов
/ 04 июня 2011

Почему бы просто не позволить imageView обрабатывать прикосновения?

...