2016-07-18 22 views
2

Nach Apples Guide to build a MealKeeper app konnte ich ein Textfeld und eine Bildansicht erstellen. Nachdem ich die UITapGestureRecognizer per Drag-and-Drop über die Bildansicht gezogen habe, habe ich den Code hinzugefügt, um die Tastatur zu verbergen, indem ich das Textfeld zum Zurücktreten mache. Wie wird die "tap" -Funktion ignoriert?

Wenn ich diesen Code im Simulator ausführen, klicke ich zuerst auf das Textfeld, die Tastatur erscheint. Dann klicke ich auf die Bildansicht, die Tastatur wird nicht ausgeblendet.

Wie wird die tap Funktion ignoriert?

+0

Bitte verlinken Sie nicht auf Ihr gesamtes Projekt erwartet, dass es heruntergeladen und ausgetestet werden. Fügen Sie hier die notwendigen Informationen ein, so dass die Frage in sich abgeschlossen ist. –

+0

Der einzige Grund, warum ich mein Projekt hochgeladen habe (mit sehr wenigen Codezeilen), ist, dass die IDE (in diesem Fall XCode) in einigen der Metadaten-Dateien etwas hinter der Szene getan hat. Ich weiß nicht, ob diese Änderungen relevant sind oder ob ich meinen Projekttyp oder irgendetwas ändern muss. – Believe2014

+0

... Sie müssen die Antwort auch nicht in Ihre Frage aufnehmen; Genau dafür ist die akzeptierte Antwortfunktion. –

Antwort

2

Sie müssen die Geste zu Ihrer Bildansicht hinzufügen, ein IBOutlet zu Ihrer Bildansicht erstellen und zu 'viewDidLoad' hinzufügen.

let tapGestureRecognizer = UITapGestureRecognizer(target:self, action:Selector("tap:")) 
imageView.userInteractionEnabled = true 
imageView.addGestureRecognizer(tapGestureRecognizer) 

Viel Glück.

+0

Danke. Ihr Vorschlag erinnert mich daran, dass ich einen Schritt verpasst habe: Festlegen des Bildansichtsattributs "Benutzerinteraktion aktiviert". – Believe2014

0

Sie können Touch-Delegaten hinzufügen und die Textfeldtastatur darauf zurücksetzen.

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
UITouch * touch = [touches anyObject]; 
if(touch.phase == UITouchPhaseBegan) { 
    [self.myTextField resignFirstResponder]; 
} 

}

1

Für Lernende, die auf dem IDE verlassen dieses Problem zu beheben, müssen Sie das Bild nach Ansicht der Benutzer-Interaktion ermöglichen.

enter image description here

0

Syntax ist ein wenig anders in der aktuellen Swift 2,3

class ViewController: UIViewController { 

@IBOutlet weak var textField: UITextField! 
@IBOutlet weak var imageView: UIImageView! 
@IBAction func tap(sender: UITapGestureRecognizer) { 
    textField.resignFirstResponder() 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 
    let tapGestureRecognizer = UITapGestureRecognizer(target:self, action:#selector(ViewController.tap(_:))) 
    imageView.userInteractionEnabled = true 
    imageView.addGestureRecognizer(tapGestureRecognizer) 
} 
}