Ich versuche, eine UIImageView-Aktion zum Akzeptieren von Aktionen zu veranlassen und sie jedes Mal auszulösen, wenn sie auf die UIImageVie geklickt hat, aber es fällt mir schwer, sie zum Laufen zu bringen
aber hier mache ich:
[View setUserInteractionEnabled:YES];
[View addTarget:self action:@selector(myAction:) forControlEvents:UIControlEventTouchUpInside];
- (void) myAction:(id)sender
{
NSLog(@"It works!");
}
Ziel c
Schreiben Sie in Ihre viewDidLoad:
-Methode folgendes:
-(void)viewDidLoad {
UIImageView *imageview = [[UIImageView alloc]initWithFrame:CGRectMake(100.0, 100.0, 100.0, 100.0)];
[imageview setImage:[UIImage imageNamed:@"image.png"]];
[imageview setUserInteractionEnabled:YES];
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapping:)];
[singleTap setNumberOfTapsRequired:1];
[imageview addGestureRecognizer:singleTap];
[self.view addSubview:imageview];
}
Rufen Sie dann Ihre Gestenmethode folgendermaßen auf:
-(void)singleTapping:(UIGestureRecognizer *)recognizer {
NSLog(@"image clicked");
}
Swift
override func viewDidLoad() {
super.viewDidLoad()
let imageView: UIImageView = UIImageView(frame: CGRectMake(100.0, 100.0, 100.0, 100.0))
imageView.image = UIImage(named: "image.png")
imageView.userInteractionEnabled = true
let singleTap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(BaseVC.singleTapping(_:)))
singleTap.numberOfTapsRequired = 1;
imageView.addGestureRecognizer(singleTap)
self.view.addSubview(imageView)
}
func singleTapping(recognizer: UIGestureRecognizer) {
print("image clicked")
}
UIImageView
ist kein Steuerelement. Sie können kein Ziel für control events hinzufügen. Sie haben mehrere Möglichkeiten:
Platziere ein unsichtbares UIButton
über dem UIImageView
und füge dein Ziel hinzu. Sie können den Stil der Schaltfläche auf Benutzerdefiniert und den Text (und das Bild) auf nichts festlegen, um sie unsichtbar zu machen.
Verwenden Sie nur eine UIButton
. Sie können ein Hintergrundbild hinzufügen.
Fügen Sie Ihrer Bildansicht ein UITapGestureRecognizer
hinzu und implementieren Sie die Touch-Handler-Methode.
Unterklasse UIImageView
und überschreibt die Methoden zur Handhabung von Berührungen, um das zu tun, was Sie tun müssen.
Alles, was Sie tun müssen, ist, einen Tap-Gesten-Erkenner auf die imageView (im Storyboard) zu ziehen und die Benutzerinteraktion im Attribut-Inspektor zu aktivieren. Wenn Sie das Bild als Link zu einem anderen Ansichtscontroller verwenden möchten, ziehen Sie das Steuerelement einfach Tippen Sie auf das Gestenerkennungssymbol unten im View-Controller, um den Ziel-View-Controller auszuwählen.
ich bin kein Profi, aber Sie können den Button dafür verwenden
UIButton *imageButton = [UIButton buttonWithType:UIButtonTypeCustom];
imageButton.frame = CGRectMake(0, 0, 200, 200);
[imageButton setImage:[UIImage imageNamed:@"Your_Image.png"] forState:UIControlStateNormal];
imageButton.adjustsImageWhenHighlighted = NO;
[imageButton addTarget:self action:@selector(myAction) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:imageButton];
UIImageView
ist keine UIControl
, daher verfügt sie nicht über die addTarget:action:forControlEvents
-Methode als Teil ihrer Schnittstelle. Sie können stattdessen eine Gestenerkennung verwenden.