webentwicklung-frage-antwort-db.com.de

UIImageView als Schaltfläche

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!");
}
23
user1480092

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")
}
71
TheTiger

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.

9
DrummerB

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];
1
superGokuN

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.

0
Mike Weller