Соедините два UIScrollView вместе

Вот хитрая проблема с iPhone, я продолжал работать. У меня есть три UIScrollViews на странице, та, которая только прокручивает горизонтально, тот, который только прокручивает вертикально, и тот, который прокручивает и горизонтально и вертикально. Я хочу заблокировать представления вместе, так, чтобы горизонтальное местоположение горизонтали только scrollview соответствовало горизонтальному местоположению основного scrollview и вертикального scrollview аналогично, так, чтобы, перетаскивая основной scrollview вокруг средств управления горизонтальный и вертикальный scrollviews.

Проблема, я полностью озадачен. Я озирался в документации яблока, но, кажется, нет никакого способа сделать это официально. Одна мысль, что я имел, состояла в том, чтобы так или иначе "клонировать" любое касание к любому из scrollviews к точке на других двух, но я понятия не имею, как сделать это. Если бы у кого-либо есть какие-либо мысли об этом, я был бы очень признателен за его.

Править: Я попробовал предложение разделения на подклассы UIScrollView и переопределения touchesMoved для вызова touchesMoved на других представлениях прокрутки. К сожалению, touchesMoved не становится требовавшимся движения прокрутки, поскольку UIScrollView прерывает те движения так или иначе и использует их для управления его прокруткой. Я начал осматривать больше низкоуровневого материала и нашел базовые слои прокрутки анимации, но идеально я не захочу воссоздавать UIScrollView с нуля. Все еще пытаясь понять этого.

5
задан johnw188 24 March 2010 в 18:17
поделиться

2 ответа

Я думаю, что самым простым способом было бы добавить делегата к вашим прокруткам, которые реализуют следующий метод:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView

Затем вы можете проверить contentOffset, чтобы проверить сколько прокрутки действительно прокручивается, и соответствующим образом обновляет основную прокрутку.

11
ответ дан 13 December 2019 в 22:05
поделиться

Вам необходимо расширить UIScrollView для всех трех применений на экране и переопределить методы touchMoved: withEvent: для вызова других (убедитесь, что у вас нет циклического кода, который снова вызывает сам себя!).

Так, например, код в элементе двусторонней прокрутки может быть основан на следующем:

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    [horizontalScrollview touchesMoved:touches withEvent:event];
    [verticalScrollview touchesMoved:touches withEvent:event];
}

с помощью некоторой дополнительной переменной (например, ControllerLastTouched ) вы можете проверить это перед вызовом двух других touchMoved : withEvent: методы.

Это должно позволить вам выполнить «клонирование», о котором вы говорили ...

-1
ответ дан 13 December 2019 в 22:05
поделиться
Другие вопросы по тегам:

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