Боравене с докосвания на 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);
        .....
    }
}

Сега изпробвах приложението си на действително устройство и там забелязах проблема си. Докато докосвам image1 с 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 = [докосва произволен обект]; вместо 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