Разве мы не можем использовать штрихи Beg, touchesMoved, touchesEnded для прокрутки? - PullRequest
0 голосов
/ 26 апреля 2010

На самом деле у меня есть просмотр прокрутки. В этом я использую 30 кнопок. что мое требование, мне нужно переставить кнопки. Например, когда я коснулся какой-либо кнопки, ее нужно выбрать одним касанием. и куда бы мы ни двигались в виде прокрутки, он должен двигаться вместе с нашим прикосновением после того, как я закончил касание, кнопки должны быть заменены. Может ли кто-нибудь помочь мне в этом .........

Ответы [ 2 ]

0 голосов
/ 30 апреля 2010

Возможно, вы захотите посмотреть, как они делают код «Launcher», как часть каталога кодов Three20, который доступен бесплатно. Они делают именно так (и имитируют вид приложений iPhone, где вы можете перемещать приложения или удалять их).

http://github.com/facebook/three20

0 голосов
/ 26 апреля 2010

Вы можете сделать это поведение, но там много работы. Вам нужно следующее:
1. Создайте подкласс UIControl, который будет вашими кнопками.
2. Отменить все прикосновения * методы там.
3. Реализовать поддержку стандартного поведения uicontrol + поведение при движении.

#pragma mark -
#pragma mark Touches delegate methods

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

    UITouch *touch = [touches anyObject];
    [self performSelector:@selector(delayedTouchBeging:) withObject:touch afterDelay:0.15];

    [super touchesBegan:touches withEvent:event];

}


- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [touches anyObject];
    if ( dragging ) {
        // move your view in new position here      
    } else {
        [super touchesMoved:touches withEvent:event];       
    }

}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {

    if ( dragging ) {

        // Do other stuff if you need

    } else {
        [super touchesEnded:touches withEvent:event];
    }

    dragging = NO;
    [NSObject cancelPreviousPerformRequestsWithTarget:self];

}


- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event {
    [self touchesEnded:touches withEvent:event];
}

- (void) delayedTouchBeging:(UITouch*) touch {
    dragging = YES;

    [self cancelTrackingWithEvent:nil];

    // Do here stuff about begin moving (animation, etc)

}
...