2016-08-02 40 views
0

Ich habe eine UIImageView, die mehrere verschiedene Bilder unterschiedlicher Größe lädt und füllt den verbleibenden Bereich der UIImageView mit einem schwarzen Hintergrund. Ich versuche einen Weg zu finden, der durch Tippen auf eine beliebige Stelle auf dem schwarzen Hintergrund, aber nicht auf dem Bild, das UIImageView verdeckt. Gibt es das überhaupt, um das zu tun?Touch erkannt auf UIImageView Hintergrund

Edit:

Dies ist das Layout des Bildschirms. Ich versuche, es so zu machen, überall in den schwarzen Bereich Klopfen wird das große Bild verstecken und zeigen nur die übrigen Dinge im Hintergrund wie folgt aussehen:

Das große Bild und schwarzen Hintergrund sind alle in einem UIImageView. Ich brauche nur eine Möglichkeit, einen Tipp im schwarzen Bereich zu erkennen und dann kann ich setzen imageview.hidden = true

+0

Bitte geben Sie Ihren ** Code ** an –

+0

Sie müssen mehr Details in Ihrer Frage angeben, da sie sonst als zu breit und/oder nicht genügend Informationen geschlossen werden, um antworten zu können. – AlBlue

Antwort

0

Hier ist eine Klasse von Typ UIViewController, die die Funktionalität implementieren würde. Es sieht so aus, als ob Sie eine UICollectionView verwenden, aber es sollte trotzdem funktionieren.

import UIKit 

class ViewController: UIViewController { 

    let imageView = UIImageView() 
    var gesture = UITapGestureRecognizer() 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 

     gesture = UITapGestureRecognizer(target: imageView, action: #selector(ViewController.gestureActivated)) 
     gesture.numberOfTapsRequired = 1 
     gesture.numberOfTouchesRequired = 1 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    func gestureActivated() { 
     let tap = gesture.location(in: imageView) 

     if let image = imageView.image?.accessibilityFrame { 
      if !image.contains(tap) { 
       imageView.isHidden = true 
      } 
     } 
    } 

} 

Im viewDidLoad I geben das Bild eine UIGestureRecognizer anzuzeigen, der aktiviert wird, wenn ein Finger verwendet wird, es einmal zu tippen. Wenn der Tap gemacht wird, wird die gestureActivated Funktion aufgerufen.

Eine Konstante wird dann mit der Position des Tap in der Bildansicht erstellt.

Nachdem Sie die Position des Wasserhahns erhalten haben, überprüfen wir, ob es auf dem Bild war. Wenn nicht, dann verstecken wir die Bildansicht.

+0

Meine Bildansicht enthält den schwarzen Hintergrund sowie das Bild selbst und ich möchte, dass die Geste nur beim Tippen auf den schwarzen Hintergrund erkannt wird, aber nicht beim Tippen auf das Bild. – Mark

+0

Haben Sie bestätigt, dass die Aktion ausgelöst wird, wenn Sie das Bild auswählen? –

+0

@Mark, ich habe meine Antwort aktualisiert. –