Как вы говорите, какой объект трогается в touchSegan? - PullRequest
16 голосов
/ 15 апреля 2010

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


- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [[event allTouches] anyObject];
    CGPoint location = [touch locationInView:self.view];
    if (touch.view == nextbutton)
        [self performSelector:@selector(next)];
    if (touch.view == prevbutton)
        [self performSelector:@selector(previous)];
    if (touch.view == moreoptionsbutton)
        [self performSelector:@selector(moresettings)];
}

Он ничего не делает, когда вы касаетесь nextbutton, prevbutton, and more optionsbutton, которые, кстати, UIImageViews. Я также попытался использовать isEqual: вместо ==, но это тоже не сработало. Есть предложения?

Ответы [ 2 ]

35 голосов
/ 16 апреля 2010

Вы должны установить userinteractionEnabled = YES для всех ваших UIImageViews, иначе они не будут получать сенсорные события. Также измените строку:

 UITouch *touch = [[event allTouches] anyObject];

до

 UITouch *touch = [touches anyObject];
2 голосов
/ 15 декабря 2014

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

if( [touch.view isKindOfClass:[Custom class]] ){
    CGPoint touchPoint = [touch locationInView:self.view];

    if( CGRectContainsPoint( self.customClassOne.frame, touchPoint )
       || CGRectContainsPoint( self.customClassTwo.frame, touchPoint ) ){
        [self touchOnCustomClass];
    }
}
...