2016-04-19 11 views
-1

Der folgende Code funktionierte ordnungsgemäß vor dem Upgrade auf Xcode 7.3;Neuer Xcode 7.3-Fehler - Mehrdeutig von 'view'

func myMethod() {

  let tapGesture = UITapGestureRecognizer(target: self, action: #selector(CreateButtonObject.notifyButtonAction(_:))) 
      let longPressGesture = UILongPressGestureRecognizer(target: self, action: #selector(CreateButtonObject.notifyButtonAction(_:))) 
      tapGesture.numberOfTapsRequired = 1 

}

@IBAction @objc func notifyButtonAction (sender: AnyObject) { 

    let userInfo:Dictionary<String,AnyObject!> 
    print("Sender from tap or longpress: \(sender)") 
    **let button = sender.view as! UIButton** 
    let soundName = button.currentTitle! 

    userInfo = ["sender" : sender] 

    NSNotificationCenter.defaultCenter().postNotificationName(sleepEZButtonActionNotificationKey, object: nil, userInfo: userInfo) 

    DDLogDebug("CreateButtonObject.notifyButtonAction: Notificaiton! ButtonViewController") 
    DDLogDebug("CreateButtonObject.notifyButtonAction: Posted Notification sleepEZButtonActionNotificationKey to initiate buttonAction") 
    DDLogDebug("CreateButtonObject.notifyButtonAction: Button Name: \(soundName)") 
    DDLogDebug("") 
} 

Aber jetzt, wenn ich das in Xcode 7.3 ich folgende Fehlermeldung auf der Linie mit sender.view erhalten; Mehrdeutige Verwendung von 'view'

gefolgt von einem Compiler-Fehler.

Wer weiß, was hier vorgeht und wie zu beheben. Kann das nicht herausfinden. Grundsätzlich muss ich die UIButton-Attribute aus dem UITapGesureRecognizer-Objekt abrufen, das erstellt und dann bei einem Tastendruck aktiviert wird. Stecken.

Vielen Dank im Voraus ...

+1

Übrigens ist der Ausdruck @IBAction @ objc redundant. '@ IBAction' impliziert' @ objc'. – matt

+0

Vor dem 7.3 Upgrade habe ich nur "@IBAction" verwendet, aber nach dem Empfang von Fehlern beim Kompilieren. Fehler zeigte an, dass ich "@objc" hinzufügen musste, also tat ich es. Keine Fehler mehr. Der Fehler rührt von der Änderung her, #selector zu verwenden und die vorherige Syntax und Verwendung von Selector abzulehnen. – zenmobi

Antwort

2

In der Erklärung func notifyButtonAction (sender: AnyObject) haben Sie sender als ANYOBJECT eingegeben haben. Aber ein AnyObject hat keine view. Also in Ihrer Zeile sender.view as! UIButton ist der Ausdruck sender.view illegal.

Typ sender als UIGestureRecognizer, wenn es das ist: func notifyButtonAction (sender: UIGestureRecognizer). Ein Gestenerkenner hat eine view, also wird alles gut.

+0

hat funktioniert! Vielen Dank! – zenmobi

+0

@zenmobi Der Weg, um mir zu danken ist, meine Antwort (Häkchen) zu akzeptieren. – matt