2013-07-04 2 views
4

Dans ma page de contact ajouter, j'ai une vue et un scrollview dessus et encore une vue sur elle. et dans cette dernière vue j'ai des textboxes, etc. J'ai donné la méthode 'touchesBegan' mais elle est appelée uniquement pour la vue en bas. comment diriger cette méthode vers une autre vue, c'est-à-dire la vue en haut?Comment faire fonctionner la méthode 'touchesBegan' pour une vue spécifique?

-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
[self.AddView endEditing:YES]; 
} 
+0

Hey Manoj vous devez accepter aucune des réponses ci-dessous. Cela aidera les gens qui cherchent des questions similaires. – Rushi

Répondre

1

essayer

-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    UITouch *touch = [[event touchesForView:vTouch] anyObject]; 
    if(!touch) 
     return; 

    CGPoint pointNow = [touch locationInView:otherView]; 
    { 
     // code here 
    } 
} 
23

Une façon est de savoir comment vous pouvez faire:

-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    UITouch *touch= [touches anyObject]; 
    if ([touch view] == image1) 
    { 
     //Action 
    } 

} 

S'il vous plaît noter: Comme vous utilisez UIScrollView vous ne pourriez pas en mesure d'obtenir des touches méthode pour UIScrollView. Dans ce cas, vous devrez peut-être utiliser UIGesture.

+7

thumbs up pour mentionner qu'il ne fonctionnera pas avec 'UIScrollView' :) – GoGreen

3

essayez ceci:

- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
     UITouch *touch1 = [touches anyObject]; 
     CGPoint touchLocation = [touch1 locationInView:self.finalScore]; 

     if(CGRectContainsPoint(YourView.frame, touchLocation)); 
     { 
      //Do stuff. 
     } 


    } 
5

Vérifiez d'abord la propriété UserInteractionEnabled de que les contrôles entiers et mis à YES

Après avoir vérifié votre cadre de vue de dessous que son pas sur ce point de vue

Et après que vous pouvez vérifier cela avec l'état de beuglement et faire quelque chose avec des commandes particulières touchent l'événement.

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    UITouch *touch = [touches anyObject]; 
    [touch locationInView:viewBoard]; 
    if([touch.view isKindOfClass:[UIImageView class]]) 
    { 
     UIImageView *tempImage=(UIImageView *) touch.view; 
     if (tempImage.tag == yourImageTag) 
     { 
      /// write your code here 
     } 
    } 
} 
4

Voici la réponse à Swift:

override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) { 
    let touch = touches.first as! UITouch 
    if(touch.view == myView){ 
     // Code 
    } 
} 
Questions connexes