2013-06-15 16 views
71

ja wyświetlanie obrazu z kodu oto kodzdarzenia kliknięcia na UIImageView programowo w iOS

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

Chcę obsługiwać dotykowy zdarzenia na preArrowImage programowo.

+0

Może to być przydatne http://stackoverflow.com/questions/9008975/how-to-tap-to-zoom-and-double-tap-to-zoom-out-in-ios –

+0

@JaleelNazir - Twoja odpowiedź nie jest prosta –

+0

Ta odpowiedź pomoże ci [http://stackoverflow.com/a/41328885/3177007](http://stackoverflow.com/a/41328885/3177007) –

Odpowiedz

197

Cel 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

dla Swift 2 powinieneś zastąpić ' Selektor ("tapDetected") 'with:' "tapDetected:" ' – datayeah

+0

Domyślnie singleTap.numberOfTapsRequired = 1, Happy Coding Thanks –

17

Po prostu dodaj zdjęcie UITapGesture, ale pamiętaj, aby jego UserAnteraction Enabled.

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

Stosując scenorys ze względu na widok kontrolera.
view may be ImageView, UIView, UILabel, TextField or other controller


Po wybraniu jednej z drag gest Rozpoznawania go do sterownika.
Teraz będzie wyświetlany w "Zarysie dokumentu" i nagłówku kontrolera widoku XIB.

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


Manually create (IBAction)method in header file


stworzyć metodę IBAction w pliku nagłówkowym
Teraz przeciągnij go z uchwytu do ikony gest w XIb
Link it with gesture icon

4

Teraz w 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

Na UIImageView umożliwić UserInterAction

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

Pomogło to Jaleel! – Marin

0

Jeśli UIImageView jest IBOutlet które można dostać z serii ujęć lub stalówka, można dodać UIGestureRecognizer do widok obrazu, włącz interakcję użytkownika i połącz IBAction z narzędziem do rozpoznawania gestów.

Aby uzyskać więcej informacji sprawdź moją odpowiedź na to pytanie: How to you make a UIImageView on the storyboard clickable (swift)

0

Oto kolejna opcja: Cheat.

Mam na myśli, myśl bocznie.

Skonfiguruj swoją UIImage, jak chcesz, przycięte, dopasować do kształtu, cokolwiek.

Nakładka ta z UIView (jednakowe wymiary, położenie itp)

ustawić tło do clearcolour, a klasa do UIControl.

Skieruj touch up wewnątrz eventu do handler'a i voila.

Powiązane problemy