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?
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% 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
:
in viewDidLoad
:
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!
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
Tags und Links objective-c ios ios7 uibutton