2016-06-24 16 views
0

Ich habe hier eine benutzerdefinierte Klasse, die aus einer UIButton innerhalb einer UIView besteht.Markieren Sie UIButton, wenn Sie die Schaltfläche selbst nicht auswählen

Das Ziel dieser Klasse ist es, Benutzern zu ermöglichen, einen größeren Bereich (die UIView) zu haben, um die Schaltfläche als nur den Schaltflächen Rahmen selbst auszuwählen.

Wenn jetzt ein Benutzer auf die Ansicht tippt, möchte ich das hervorgehobene Bild anzeigen ... Aber das Problem ist, es tut es nicht.

Ich habe viele mögliche Lösungen für dieses Problem lautet zum Beispiel:

Berufung: [btnObject sendActionsForControlEvents:UIControlEventTouchUpInside] Dies ist jedoch nicht markieren änderte sich die Tasten.

Ich habe auch versucht nur Einstellungen der button.highlighted = YES; Aber das hat auch nicht funktioniert.

Ich habe die Bilder für verschiedene Zustände richtig eingerichtet (Normal und Highlighted), da bin ich mir sicher.

Ich habe auch die GestenRecognizer funktioniert ordnungsgemäß, da die Funktionalität groß ist, abgesehen von der fehlenden Highlight.

Weiß jemand, ob mir etwas Besonderes fehlt, das getan werden muss, um diese scheinbar sehr einfache Aufgabe zu erledigen? Sicher wurde es viele Male getan.

Danke

+1

Bitte lesen Sie diese http://stackoverflow.com/questions/808503/uibutton-making-the-hit-area-larger-than-the-default-hit-area –

+0

Könnten Sie bitte auch Ihren Code posten? Ich schaue mir deinen Code lieber an, als zu versuchen, zu erraten, was du falsch gemacht hast. – Armin

Antwort

0

Sie auf dem richtigen Weg waren. -[UIButton setHighlighted:] ist nur eine Flagge. Was Sie tun müssen, ist setNeedsDisplay auf dieser Schaltfläche direkt nach dem Ändern der highlighted Eigenschaft aufrufen.

0

Ich löste mein Problem vor einiger Zeit und ich bin mir nicht sicher, ob Kevin Low's Antwort auch funktioniert hätte, könnte es sehr gut haben.

Aber aus irgendeinem Grund funktioniert ein UITapGesture nicht gut mit der Hervorhebung Schaltflächen als eine Ansicht Übergänge (Das könnte sein, weil ich SetNeedsDisplay nicht aufgerufen habe). Die Geste, die am Ende funktionierte, war die UILongPressGesture mit einer minimalen Dauer von 0,0 Sek.