Создайте прокручиваемое меню с UIImages, представляющими каждый возможный выбор.Эти UIImages должны быть в состоянии привязываться к сетке один за другим - PullRequest
0 голосов
/ 02 сентября 2011

Я пытаюсь создать меню (используя UIScrollView), где пользователь может выбирать изображения (используя UIImageViews).

Я хочу, чтобы в любое время было видно как минимум 3 изображения. Когда я прокручиваю, изображения смогут зафиксироваться на месте.

Однако, если мне нужно использовать UIScrollView, который достаточно велик для одновременного отображения 3-х изображений, и я включаю подкачку страниц, при пейджинге все 3 изображения будут перемещаться вместе и привязываться только к следующим 3 изображениям.

И если мне нужно использовать UIScrollView, который умещается всего в 1 изображение, и я включаю clipsToBounds (что помогает мне рисовать изображения за пределами UIScrollView). Жесты моей фигуры могут быть обнаружены только в самом UIScrollView, я хочу, чтобы жесты моей фигуры были обнаружены, если касаться любого из изображений.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 03 сентября 2011

Я написал собственный класс UIView, который переопределяет метод hitTest для UIView.

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

UIScrollView *thatScrollView;

В реализации не забудьте синтезировать переменную и перезаписать hitTest

@synthesize thatScrollView;

- (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
    if ([self pointInside:point withEvent:event]) {
        return thatScrollView;
    }
    return nil;
}

Затем в классе UIViewController создайте экземпляр класса и назначьте вид прокрутки, который вы хотите прокрутить:

hiddenView.underneathButton = scrollView1;
0 голосов
/ 02 сентября 2011

Вы можете использовать следующий метод UIScrollView, чтобы прокрутить его из кода столько, сколько вы хотите.

- (void)scrollRectToVisible:(CGRect)rect animated:(BOOL)animated

Вы можете вызвать это из следующего метода UIScrowViewDelegate. - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

Таким образом, вы можете управлять тем, сколько будет вызывать прокрутка.

А для получения прикосновений реализуйте отдельный класс, который отображает изображения (наследует его от UIImageView или UIView) и реализует в этом функции touchesBegin или touchesEnded. Здесь, когда вы получаете прикосновение в своем пользовательском представлении, вызываете какой-либо метод родительского представления и уведомляете его соответствующими аргументами (вы можете назначить свойство тега и передать его представлению с прокруткой, чтобы точно определить, какое изображение было нажато).

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

...