Какао Touch - UIButtons - Подклассы UIButton - PullRequest
1 голос
/ 25 сентября 2010

Привет всем, может кто-нибудь объяснить, как я могу создать подкласс UIButton и переопределить какой-либо метод, чтобы, когда пользователь перетаскивает кнопку, он сразу появлялся? Проблема в том, что когда я перетаскиваю из рамки кнопки, она остается активной и внизу. Я хочу, чтобы он прекратился, как только палец покинет рамку кнопки. Есть идеи?

(Какао Touch)

1 Ответ

4 голосов
/ 25 сентября 2010

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

(Я перебрал UIButton и сделал следующее:)

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    touchBlocker = TRUE;
    self.highlighted = TRUE;
    NSLog(@"Touch Began");
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [[event allTouches] anyObject];
    CGPoint location = [touch locationInView:self];
    if (touchBlocker) {
        if (!CGRectContainsPoint([self bounds], location)) {
            touchBlocker =FALSE;
            self.highlighted = FALSE;
            NSLog(@"Touch Exit");
        }   
    } else if (CGRectContainsPoint([self bounds], location)) {
        touchBlocker = TRUE;
        self.highlighted = TRUE;
        NSLog(@"Touch Enter");
    }

}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    touchBlocker = FALSE;
    self.highlighted = FALSE;
    NSLog(@"Touch Ended");
}
...