2010-04-15 13 views
15

Ich weiß, dass dies eine sehr häufig gestellte Frage ist, aber alle Antworten auf jeder Website funktionieren nicht! Wenn Sie immer noch nicht wissen, was ich meine, dann wird Ihnen diese Codezeile vielleicht helfen, das zu verstehen.Wie erkennen Sie, welches Objekt in Berührungen berührt wirdBegan?


- (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)]; 
} 

Es macht nichts, wenn Sie nextbutton, prevbutton, and more optionsbutton berühren, das sind UIImageViews durch die Art und Weise. Ich habe auch versucht, isEqual: anstelle von == zu verwenden, aber das hat auch nicht geklappt. Irgendwelche Vorschläge?

Antwort

34

Sie müssen userinteractionEnabled = YES für alle Ihre UIImageViews setzen, sonst werden sie keine Berührungsereignisse empfangen. Ändern Sie auch die Zeile:

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

zu

UITouch *touch = [touches anyObject]; 
+1

Vielen Dank für die userinteractionEnabled = JA Tipp. Ich schlug mit dem Kopf, um herauszufinden, warum meine UIImageView keine Berührungen registrierte. – DenVog

2

Ich habe einen Scheck sicher sein es ist die Ansicht, die ich erwarten, bevor sie angeklickt werden.

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]; 
    } 
} 
Verwandte Themen