2015-05-25 11 views
8

Ich weiß, es gibt bereits einige Fragen dazu, aber ich konnte keine Lösung finden. Es gibt einen sehr einfachen Code, der bei einem meiner Projekte funktioniert, aber nicht bei einem anderen:touchesBegan nicht aufgerufen in UIView Unterklasse

Hier ist der Code für die Unterklasse von UIView.

import UIKit 

class test : UIView { 

    init(frame: CGRect, color: UIColor) { 
     super.init(frame: frame) 
     self.backgroundColor = color 
     self.userInteractionEnabled = true 
    } 

    required init(coder aDecoder: NSCoder) { 
     fatalError("init(coder:) has not been implemented") 
    } 

    override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) { 
     super.touchesBegan(touches, withEvent: event) 
     var alert = UIAlertView() 
     alert.title = "lol" 
     alert.message = "lol" 
     alert.addButtonWithTitle("Ok") 
     alert.show() 
    } 
} 

Ich bin sicher, dass die Lösung ziemlich einfach ist, aber ich kann es nicht finden.

+0

Was meinen Sie mit "nicht funktioniert"? – rdelmar

+0

Ich meine, dass, wenn ich die Ansicht berühre, No AlertView zeigen –

+0

versucht mit einem einfachen println() in der Funktion, um zu sehen, ob es sich nicht um einen Fehler mit dem Alertview? – Wraithseeker

Antwort

12

Sie müssen sicherstellen, dass userInteractionEnabled in allen Ansichten Ihrer Ansicht aktiviert ist. Wenn für eine der Übersichten diese Eigenschaft auf false festgelegt ist, werden die Berührungsereignisse für sie oder eine ihrer Untersichten nicht verarbeitet.

+2

Ich bekomme nicht das gewünschte Ergebnis, obwohl ich view-> scrollview-> view layout habe, und in beiden Ansichten habe ich userInteractionEnabled auf true gesetzt –

4

Vielleicht hat einige der Superviews die userInteractionEnabled auf "false" gesetzt?

Verwandte Themen