Wyświetlam obraz z kodu, tutaj jest kod
UIImageView *preArrowImage =[[UIImageView alloc]init ];
preArrowImage.image =[UIImage imageNamed:@"arrowprev.png"];
preArrowImage.frame = CGRectMake(20, 60, 10, 30);
[self.view addSubview:preArrowImage];
Chcę programowo obsłużyć zdarzenie dotyku na preArrowImage.
iphone
ios
uiimageview
uitouch
uitapgesturerecognizer
Sumit Patel
źródło
źródło
Odpowiedzi:
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.2 / 5
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") }
źródło
Selector("tapDetected")
:"tapDetected:"
Po prostu dodaj znak
UITapGesture
do obrazu, ale pamiętaj, aby włączyć jego interakcję użytkownika .UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapGestureCaptured:)]; [preArrowImage addGestureRecognizer:singleTap]; [preArrowImage setMultipleTouchEnabled:YES]; [preArrowImage setUserInteractionEnabled:YES];
źródło
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") }
źródło
Szybki 3
W UIImageView włącz 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!) } } }
źródło
Korzystanie ze scenorysu z kontrolerem widoku w widoku.
Po wybraniu jednego z rozpoznawania gestów przeciągnij go do kontrolera.
Teraz wyświetli się w "Zarysie dokumentu" i nagłówku kontrolera widoku xib.
Przeciągnij gest do UILable
utwórz metodę IBAction w pliku nagłówkowym
Teraz przeciągnij ją z programu obsługi do ikony gestu w xib
źródło
Jeśli Twój UIImageView jest IBOutlet, który otrzymujesz z Storyboard lub Nib, możesz dodać UIGestureRecognizer do widoku obrazu, włączyć interakcję użytkownika i połączyć IBAction z rozpoznawaniem gestów.
Aby uzyskać więcej informacji, sprawdź moją odpowiedź na to pytanie: Jak sprawić, by widok UIImageView w scenorysie był klikalny (szybki)
źródło
Oto inna opcja: Cheat.
To znaczy myśl bocznie.
Skonfiguruj swojego UIImage, jak chcesz, przyciąć, dopasować proporcje, cokolwiek.
Nałóż na to UIView (równe wymiary, położenie itp.)
Ustaw tło na clearcolour, a klasę na UIControl.
Skieruj retusz wewnątrz zdarzenia na swojego handlera i voila.
źródło
Xamarin.iOS
UIImageView preArrowImage; // also give it frame var singleTap = new UITapGestureRecognizer(TapDetected); singleTap.ShouldReceiveTouch -= TapGesture_ShouldReceiveTouch; singleTap.ShouldReceiveTouch += TapGesture_ShouldReceiveTouch; preArrowImage.UserInteractionEnabled = true; preArrowImage.AddGestureRecognizer(singleTap) bool TapGesture_ShouldReceiveTouch(UIGestureRecognizer recognizer, UITouch touch) { return true; } void TapDetected(UITapGestureRecognizer tapGestureRecognizer) { print("Imageview Clicked") }
źródło