Xcode 6.3. Innerhalb einer Klasse, die das UITextFieldDelegate-Protokoll implementiert, möchte ich die touchBegan () -Methode überschreiben, um möglicherweise die Tastatur auszublenden. Wenn ich einen Compilerfehler in der Funktionsspezifikation vermeide, gibt es einen kompatiblen Fehler beim Versuch, die "Berührung" aus dem Set oder NSSet zu lesen, oder das super.touchesBegan (Berührungen, mit Ereignis: Ereignis) löst einen Fehler aus. Eine dieser in Xcode 6.2 kompilierten Kombinationen! (Wo ist also die Dokumentation zu Swift "Set" und wie erhält man ein Element aus einem?)
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
// Hiding the Keyboard when the User Taps the Background
if let touch = touches.anyObject() as? UITouch {
if nameTF.isFirstResponder() && touch.view != nameTF {
nameTF.resignFirstResponder();
}
}
super.touchesBegan(touches , withEvent:event)
}
Versuchen:
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) or
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent)
Compilerfehler: Überschreibende Methode mit Selektor 'touchBegan: withEvent:' hat inkompatiblen Typ '(NSSet, UIEvent) -> ()' und
super.touchesBegan(touches , withEvent:event)
beschwert sich auch
'NSSet' kann nicht implizit in 'Set' konvertiert werden. Wollten Sie 'as' verwenden, um explizit zu konvertieren?
Versuchen:
override func touchesBegan(touches: Set<AnyObject>, withEvent event: UIEvent)
Compilerfehler: Typ 'AnyObject' entspricht nicht dem Protokoll 'Hashable'
Versuchen:
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent)
Compilerfehler bei
if let touch = touches.anyObject() as? UITouch
'Set' hat kein Mitglied namens 'anyObject', ABER die Funktionsspezifikation und der Aufruf von super () sind OK!
Versuchen:
override func touchesBegan(touches: NSSet<AnyObject>, withEvent event: UIEvent) -> () or
override func touchesBegan(touches: NSSet<NSObject>, withEvent event: UIEvent)
Compilerfehler: Nicht generischer Typ 'NSSet' kann nicht spezialisiert werden.