2016-03-25 45 views
1

Ich habe eine benutzerdefinierte Schaltfläche und es ist eine statische Zelle hinzugefügt. Irgendwie, wenn ich auf den Knopf tippe, reagiert er nicht sofort wie wenn der Knopf zu einer normalen normalen Ansicht hinzugefügt wird.Schaltfläche in der Tabellenansicht Zelle

Wenn diese Taste angetippt wird, registriert sie sofort den Tap, aber die Hintergrundfarbe hat eine leichte Verzögerung, bevor sie geändert wird.


Um die Farbe Ich habe ändern Sie den folgenden Code in meiner Unterklasse von UIButton:

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 
    super.touchesBegan(touches, withEvent: event) 

    border.fillColor = .redColor() // border is a CAShapeLayer 
    print("began")     // This prints right when the button is clicked 
} 

Diese Schaltfläche in einer Unterklasse von UITableViewCell hinzugefügt wird und die Taste reagiert, mit Ausnahme des Farbwechsel hat eine verzögern. Wie kann ich das beheben?

Antwort (von Jelly):
Die Antwort von Jelly hat mir sehr geholfen und machte die Taste etwas besser reagieren. Zu wissen, was das Problem ist auch es leichter gemacht, um das Problem zu erforschen und zu erfahren die Taste reagiert so wie es in einer normalen Ansicht, die ich beide delaysContentTouches in der Tabellenansicht deaktivieren muß und es ist Subviews:

tableView.delaysContentTouches = false 
tableView.subviews.forEach { ($0 as? UIScrollView)?.delaysContentTouches = false } 
+0

Warum verwenden Sie nicht 'UIButton: addTarget' Methode anstelle von tippen – garanda

Antwort

5

Setzen Sie delaysContentTouches = false auf Ihrem TableView.

+0

Vielen Dank! Ich wusste nicht, dass es eine Standardverzögerung in einer Tabellenansicht gab (ich kann es in 3 Minuten akzeptieren). –

+0

Eigentlich ist es auf 'UIScrollView', von dem' UITableView' erbt. – Jelly

+0

Mit Ihrer Antwort funktionierte es ein bisschen besser, aber fühlte sich immer noch ein bisschen aus. Also habe ich ein bisschen mehr gesucht, was leichter war zu wissen, dass es um 'delaysContentTouches' ging. Ich habe herausgefunden, dass es in der Unteransicht einer Tabellenansicht noch ein 'UIScrollView' gibt und muss 'delayContentTouches' dieser Scrollansicht ebenfalls deaktivieren. Ich werde bearbeiten, was ich in meiner Frage getan habe. –

Verwandte Themen