2010-09-23 2 views
34

Je veux appeler mon événement de clic sur un bouton tout en touchant la uiimageview nommée (image1) .Imageview placée dans uiview (vue1).UIImageView Touch Event

Ceci est mon code:

- (IBAction)buttonClicked:(id)sender 
{ 

myTimer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(alphabutt:) userInfo:nil repeats:NO]; 
} 


-(IBAction)alphabutt:(id)sender 
{ 
NSLog(@"alphabutt!"); 


if(i==1) 
{ 
    NSLog(@"i==1"); 
    [image1 setImage:[UIImage imageNamed:@"appleimg.jpg"]]; 
    [view1 addSubview:image1]; 
    transition1 = [CATransition animation]; 

    transition1.duration = 0.75; 

    transition1.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; 

    transition1.type=kCATransitionReveal; 
    transition1.subtype=kCATransitionFromRight; 
    transitioning = YES; 
    transition1.delegate = self; 
    [image1.layer addAnimation:transition1 forKey:nil]; 
} 
if(i==2) 
{ 
    NSLog(@"i==2"); 
    [image1 setImage:[UIImage imageNamed:@"boatimg.jpg"]]; 
    [view1 addSubview:image1]; 
    transition2 = [CATransition animation]; 

    transition2.duration = 0.75; 

    transition2.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; 

    transition2.type=kCATransitionFade; 
    transition2.subtype=kCATransitionFromRight; 
    transitioning = YES; 
    transition2.delegate = self; 
    [image1.layer addAnimation:transition2 forKey:nil]; 

    i=0; 
} 
i++; 

} 

Ce qui précède est mon code en cliquant sur le bouton de l'événement ButtonClicked est l'événement called.Inside de ButtonClick la minuterie fonctionne pour appeler le alphabutt (événement click Button) avec le temps L'intervalle de 2.0.alphabutt est appelé avec chaque 2.0. Je veux faire cette animation quand je touche la uiimageview (image1) alors seulement elle appelle le bouton click event (alphabutt). comment puis-je écrire l'événement tactile pour imageview ...

S'il vous plaît expliquer brièvement un code pour effectuer événement tactile UIImageView ...

+0

S'il vous plaît me répondre le plus tôt possible ... –

+0

S'il vous plaît, ALW AYS formate votre code. Votre question porte à confusion sur la touche imageview et le bouton tactile (que voulez-vous demander ici?) – vodkhang

+1

Désolé pour ne pas avoir formaté le code .... Dans mon code à l'intérieur de l'événement buttonclicked NSTimer (myTimer) est utilisé pour appeler l'autre événement click click (alphabutt) avec le temps intervel de 2.0.Au lieu de timer je veux appeler l'alphabutt (bouton click event) par uiimageview (image1) touchevent .Comment puis-je faire ça ... Plz aide moi ... –

Répondre

56

Faites votre point de vue d'image interaction utilisateur activée dans le xib (ou par le code si vous ajoutez par programme) et d'utiliser les méthodes de UIResponder touchesBegan, touchesMoved, etc touchesEnded pour détecter le contact sur le point de vue de l'image:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 

    UITouch *touch = [touches anyObject]; 

    if ([touch view] == yourImageView) 
    { 
      //add your code for image touch here 
    } 

} 
+0

Merci Iukya ... –

+0

salut ... Mon application est basée sur l'application tabbar.Je donne tout le code pour les événements tactiles à l'intérieur du myAppAppDelegate.m ... Il ne fonctionne pas ce que je devrais faire dans mon application.S'il vous plaît expliquer brièvement ... J'attends S'il vous plaît répondre bientôt ... Merci ... –

+0

vous n'avez pas à gérer les touches dans le délégué de l'application ... implémentez les méthodes tactiles dans votre contrôleur de vue qui contient l'image ... – lukya

59

vous pouvez utiliser UITapGestureRecognizer ajouté à la UIImageView via addGestureRecognizer

extraits:

UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(bannerTapped:)]; 
singleTap.numberOfTapsRequired = 1; 
singleTap.numberOfTouchesRequired = 1; 
[iv addGestureRecognizer:singleTap]; 
[iv setUserInteractionEnabled:YES]; 

et

- (void)bannerTapped:(UIGestureRecognizer *)gestureRecognizer { 
    NSLog(@"%@", [gestureRecognizer view]); 
} 
6

Vous pouvez également glisser-déposer un objet sur la UIButtonUIImageView. Ensuite, dans l'éditeur de storyboard, il suffit de faire le UIButton du type Custom, ce qui rend le UIButton invisible. Puis gérer l'événement click comme vous le feriez pour n'importe quel bouton.

+0

Vérifiez ** Version rapide ** [http://stackoverflow.com/a/41328885/3177007]http://stackoverflow.com/a/41328885/3177007) –

13

Ici je vous montre deux possibilités de réaliser que Swift:

première possibilité

import UIKit 

class ViewController: UIViewController { 
    @IBOutlet var myUIImageView: UIImageView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // You can also manually set it through IB 
     // selecting the UIImageView in the storyboard 
     // and checking "User Interaction Enabled" checkbox 
     // in the Attributes Inspector panel. 
     self.myUIImageView.userInteractionEnabled = true 
    } 

    // You can choose to use one of the UIResponder methods: 
    // touchesBegan, touchesMoved, touchesEnded etc, in order to detect the touch 
    // on the UIImageView. 
    override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) { 
     let touch: UITouch? = touches.first 
     if touch?.view == myUIImageView { 
      println("myUIImageView has been tapped by the user.") 
     } 
     super.touchesEnded(touches, withEvent: event) 
    } 
} 

deuxième possibilité

import UIKit 

class ViewController: UIViewController { 
    @IBOutlet var myUIImageView: UIImageView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     let singleTap = UITapGestureRecognizer(target: self, action: "myUIImageViewTapped:") 
     singleTap.numberOfTapsRequired = 1 // Initialized to 1 by default 
     singleTap.numberOfTouchesRequired = 1 // Initialized to 1 by default 
     self.myUIImageView.addGestureRecognizer(singleTap) 
     self.myUIImageView.userInteractionEnabled = true 
    } 

    func myUIImageViewTapped(recognizer: UITapGestureRecognizer) { 
     if(recognizer.state == UIGestureRecognizerState.Ended){ 
      println("myUIImageView has been tapped by the user.") 
     } 
    } 
} 
+0

Le La première possibilité a fonctionné comme un charme !! –