2013-06-15 3 views
71

ich ein Bild von Code hier bin Anzeige ist der CodeClick-Ereignis auf UIImageView programmatisch in ios

UIImageView *preArrowImage =[[UIImageView alloc]init ]; 
preArrowImage.image =[UIImage imageNamed:@"arrowprev.png"]; 
preArrowImage.frame = CGRectMake(20, 60, 10, 30); 
[self.view addSubview:preArrowImage]; 

ich das Touch-Ereignis auf dem preArrowImage programmatisch zu handhaben will.

+0

Dies kann von Nutzen sein http://stackoverflow.com/questions/9008975/how-to-tap-to-zoom-and-double-tap-to-zoom-out-in-ios –

+0

@JaleelNazir - Ihre Antwort ist nicht einfach –

+0

Überprüfen Sie diese Antwort wird Ihnen helfen, http://stackoverflow.com/a/41328885/3177007](http://stackoverflow.com/a/41328885/3177007) –

Antwort

197

Objective-C

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

-(void)tapDetected{ 
    NSLog(@"single Tap on imageview"); 
    } 

SWIFT 4

let preArrowImage : UIImageView // also give it frame 
let singleTap = UITapGestureRecognizer(target: self, action: Selector("tapDetected")) 
preArrowImage.isUserInteractionEnabled = true 
preArrowImage.addGestureRecognizer(singleTap) 

//Action 
@objc func tapDetected() { 
    print("Imageview Clicked") 
} 
+0

für Swift 2 sollten Sie 'ersetzen Selector ("tapDetected") 'mit:' "tapDetected:" ' – datayeah

+0

Standardmäßig singleTap.numberOfTapsRequired = 1, Happy Coding Danke –

17

Fügen Sie einfach ein UITapGesture in das Bild ein, aber denken Sie daran, dass es UserInteraction Enabled ist.

UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self 
    action:@selector(singleTapGestureCaptured:)]; 
    [preArrowImage addGestureRecognizer:singleTap]; 
    [preArrowImage setMultipleTouchEnabled:YES]; 
    [preArrowImage setUserInteractionEnabled:YES]; 
2

Verwendung Storyboard mit Blick in View-Controller.
view may be ImageView, UIView, UILabel, TextField or other controller


Nachdem es auf dem Controller eine des Gestenerkenner drag auswählen.
Nun wird es in "Document Gliederung" und Header der Ansicht Controller Xib angezeigt.

Gesture icon in document out line and xib
Drag Geste UILable
Drag gesture to UILable


Manually create (IBAction)method in header file


erstellen IBAction Methode in Header-Datei
Jetzt ziehen Sie es aus Handler Geste Symbol in xib
Link it with gesture icon

4

Jetzt in Swift!

let singleTap = UITapGestureRecognizer(target: self, action: Selector("tapDetected")) 
singleTap.numberOfTapsRequired = 1 

preArrowImage.userInteractionEnabled = true 
preArrowImage.addGestureRecognizer(singleTap) 


//Action 
func tapDetected() { 
    println("Single Tap on imageview") 
} 
1

Swift 3

Auf UIImageView ermöglichen Anwenderwechsel

override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) { 
     super.touchesEnded(touches, with: event) 

     if let touch = touches.first { 
      if touch.view == self.imgVwPostPreview { //image View property 

       //Do your actions 
       //self.delegate?.didClickOnCellImageView(indexPath: self.cellIndexPath!) 
      } 
     } 
    } 
+0

Dies half Jaleel! – Marin

0

Wenn Ihr UIImageView eine ist IBOutlet, die Sie von einem Storyboard oder Nib bekommen Sie eine UIGestureRecognizer addieren, könnte Bildansicht, ermöglichen Benutzerinteraktion und verbinden eine IBAction mit dem Gestenerkenner.

Für weitere Informationen überprüfen Sie meine Antwort auf diese Frage: How to you make a UIImageView on the storyboard clickable (swift)

0

Hier ist eine andere Option: Cheat.

Ich meine, denke seitlich.

Richten Sie Ihre UIImage wie Sie wollen, beschnitten, Aspekt fit, was auch immer.

Overlay dies mit einem UIView (gleiche Abmessungen, Position etc.)

den Hintergrund einstellen zu Clearcolour, und die Klasse, zu UIControl.

Zeigen Sie das Touch-up-Ereignis auf Ihren Handler, und voila.