Die UIB-Taste am unteren Bildschirmrand wird nur zeitweise hervorgehoben

8

Ich habe einige UIB-Schaltflächen am unteren Rand der Hauptansicht meiner App. Diese Schaltflächen werden nicht intermittierend hervorgehoben, wenn ein Benutzer auf sie tippt, aber ihre Zielmethoden werden immer aufgerufen. Ich habe festgestellt, dass der Gestenerkennungserkenner von Control Center die Hervorhebung von UIButton beeinträchtigt. Wenn ich die enthaltene Ansicht nach oben in die Mitte des Bildschirms verschiebe, funktioniert alles wie vorgesehen.

Das Problem wurde hier gemeldet Ссылка

Als Workaround habe ich versucht, den hervorgehobenen Zustand mit der Zielmethode manuell einzustellen. Dies scheint den gleichen Effekt zu haben, den UIButton normal hervorheben zu lassen.

Irgendwelche Ideen, wie Sie das umgehen können, ohne diese Steuerelemente neu zu gestalten, damit sie an anderer Stelle in der App erscheinen?

Vielleicht verwende ich eine Standardansicht und füge alle Methoden zur Touch-Interaktion von Hand hinzu? Wie würde ich das tun? Ist es überhaupt eine Erkundung wert?

    
Aaron Shekey 30.09.2013, 01:26
quelle

4 Antworten

4

Ich habe eine ziemlich einfache Problemumgehung dafür gefunden. Die Verwendung von Standardeigenschaften wie .highlighted = YES und .selected = YES scheint in diesem unteren Bereich nicht zu funktionieren. Anstatt den hervorgehobenen Zustand einzustellen, setze ich einfach das Hintergrundbild der Schaltfläche mit einer nicht wahrgenommenen Verzögerung in den hervorgehobenen Zustand, BEVOR wir die endgültige Methode aufrufen.

%Vor%     
Aaron Shekey 26.12.2013, 06:13
quelle
3

Ich bin kürzlich auf dasselbe Problem gestoßen und habe überall nach einer Antwort gesucht. Das hat bei mir funktioniert. Es war eine Kombination aus zwei Dingen, der UINavigationController Zurück-Wischgeste und der iOS 7 Kontrollzentrum Geste (Wischen vom unteren Bildschirmrand nach oben).

Deaktivieren Sie die Zurückwischgeste, wenn Sie sich in UINavigationController :

befinden

in viewDidLoad :

%Vor%

Legen Sie fest, dass die Geste der Steuerzentrale nur einen Pfeil nach oben zeigt, anstatt zuerst das Kontrollzentrum anzuzeigen. Sie können dies tun, indem Sie die folgende UIViewController-Methode überschreiben:

%Vor%

Hoffe, das hilft!

    
devkevwin 27.01.2014 19:06
quelle
1

Ich habe ein Update für dieses Problem gepostet, das die Hervorhebung in dieser Frage zurückbringt. Die Hervorhebung wird durch Unterklassen von UIButton und Überschreiben von PointInside behoben: um Berührungsereignisse zu erfassen

    
Lukas 21.05.2014 15:10
quelle
0

Wenn Sie eine Taste haben, die den gesamten unteren Bildschirmrand bedeckt, können Sie auf ein Problem stoßen, bei dem nur der linke Teil diese Verzögerung hat.

Um die Rückkopplungszeit für die gesamte Schaltfläche zu normalisieren, könnte man die folgende Lösung verwenden (eine verbesserte Version von Aaron Shekey):

%Vor%

hinweis: performSelector kann gut mit negativen verzögerungswerten umgehen, aber besser als sorry

    
galambalazs 11.02.2016 12:49
quelle

Tags und Links