Обработка касаний на Iphone

У меня небольшая проблема с обработкой касаний в моих приложениях.

Я установил свои штрихи так:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *currentTouch = [[event allTouches] anyObject];
    touchPoint = [currentTouch locationInView:self.view];
    if (CGRectContainsPoint(image1.frame, touchPoint)) {
        image1IsTouched = YES;
    }
}

Затем я установил свой сенсорный ход следующим образом:

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{  
    UITouch *currentTouch = [[event allTouches] anyObject];
    currentPoint = [currentTouch locationInView:currentTouch.view];

    if(image1IsTouched == YES) {
        image1.center = CGPointMake(currentPoint.x,currentPoint.y);
        .....
    }
}

Теперь я попробовал свое приложение на реальном устройстве, и вот где я заметил свою проблему. Пока я касаюсь изображения1 одним пальцем, приложение работает нормально и проверяет наличие столкновений каждый раз, когда я перетаскиваю палец. Проблема возникает, когда я касаюсь экрана другим пальцем во время касания / перетаскивания изображения. Изображение, которого я сейчас касаюсь, перейдет на другой палец. Я пробовал [myView setMultipleTouchEnable:NO]; & использовать NSArray на прикосновениях и сравнивал [touches count] с прикосновениями, но это не работает. Может ли кто-нибудь показать мне, как настроить uiimageview для работы только с одним касанием. Спасибо.


person Drahc    schedule 22.07.2010    source источник


Ответы (1)


Во-первых, вы должны использовать UITouch *currentTouch = [touches anyObject];, чтобы получить текущее касание.

Во-вторых, вы должны проверить это touches.count == 1, чтобы убедиться, что на экране только один палец, и игнорировать сенсорный ввод, если их больше одного, если вы не хотите поддерживать мультитач.

person lucius    schedule 22.07.2010
comment
вы имеете в виду, что я должен использовать UITouch * currentTouch = [касается anyObject]; вместо UITouch * currentTouch = [[event allTouches] anyObject]; В чем разница между ними? Извините за вопрос о новичках :). - person Drahc; 22.07.2010
comment
Вау, я только что его протестировал, и он отлично работает. Большое спасибо. :) - person Drahc; 22.07.2010
comment
[event allTouches] получает все пальцы на вашем экране, даже те, которые находятся вне вашего поля зрения. Это полезно, когда вы хотите убедиться, что получаете все прикосновения, даже случайные. - person lucius; 22.07.2010
comment
да, я понял это после просмотра видео с программированием iphone в itunes. в любом случае спасибо за помощь, очень признателен. - person Drahc; 23.07.2010