проблема с двойным касанием горизонтальной прокрутки - PullRequest
0 голосов
/ 26 января 2011

Я занимался этой проблемой уже несколько недель, но до сих пор не нашел решения. пожалуйста, помогите.

У меня большой вид прокрутки с изображениями. Каждое изображение имеет ширину экрана и возможность подкачки.

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

так как у меня много изображений, у меня много кнопок на небольшом представлении прокрутки.

прямо сейчас, большая прокрутка и маленькая прокрутка работают нормально, и кнопки также.

Моя проблема начинается с дальних концов маленького свитка. когда я нахожусь в конце маленького свитка (но все еще в середине большого), я не хочу, чтобы большой переместился, когда я перемещаю свой палец в тупик. Вы можете сказать, что я хочу отделить маленький свиток от большого, но все же оставить его в качестве подпредставления (потому что я хочу, чтобы он двигался вместе с большим).

Я попытался создать подклассы маленького свитка, кнопок, переопределить hitTest и прикоснуться к Began / End, но пока ничего.

Я очень расстроен, потому что мой заказчик требует, чтобы он работал по-своему.

Меня так долго гуглили, и я ничего не могу найти!

HELLLPPPPP!

1 Ответ

0 голосов
/ 26 января 2011

Вот фрагмент кода, который я нашел бесценным в одном из моих проектов:

- (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
    UIView* result = [super hitTest:point withEvent:event];

    if (/* result or any of its superviews are equal to your little scroll view */) {
        [self setContentOffset:CGPointZero animated:YES];
        self.scrollEnabled = NO;
    } else {
        self.scrollEnabled = YES;    
    }
    return result;
}

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

Надеюсь, это поможет, и если у вас возникнут проблемы с пониманием кода, я с удовольствием объясню вам.

РЕДАКТИРОВАТЬ: Основная идея заключается в том, что вы поворачиваете прокрутку в большом представлении прокрутки, если ваш палец касается маленького представления прокрутки, так что большое представление прокрутки не будет прокручиваться. Если ваш палец не касается маленького вида прокрутки, прокрутка большого вида прокрутки снова включается и должна вести себя как обычно.

...