Für meine benutzerdefinierte UIView habe ich touchesBegan
Methode überschrieben. Was ich ihm gesagt habe ist, seine Hintergrundfarbe zu ändern:iOS Layer Farbwechsel
dispatch_async(dispatch_get_main_queue()){
self.layer.backgroundColor = clr_someCGColor
}
Es wirkt komisch. Wenn ich schnell auf die Ansicht tippe, während ich in Landscape alles perfekt mache, aber wenn ich das in Portrait mache, muss ich es für einige Zeit halten, um das Ergebnis zu sehen, aber die touchesEnded
Methode wird sofort aufgerufen, wenn ich schnell tippe. Was könnte der Grund sein, die Verspätung in Portrait zu verursachen?
Ich habe es in "dispatch_async" Wrapper, nachdem ich das erste Mal das Problem erlebt und es wieder zu entfernen half nicht. 'UITapGestureRecognizer' gibt nicht die volle Kontrolle über Berührungsereignisse, die ich brauche, um das bg des Layers auf' clr_active' und dann zurück auf 'clr_normal' zu setzen, nachdem die Berührung beendet wurde. – EBDOKUM
Das ist in Ordnung. Aber das 'dispatch_async' hilft dir hier nicht. Ich habe eine App, wo ich das gleiche mache: Ich habe einen Tap-Gesten-Erkenner, aber ich möchte auch zwischen aktivem und inaktivem Look wechseln, während der Finger unten ist, also benutze ich 'touchesBegan' und' touchesEnd', und es funktioniert gut. Das Problem kann in Code sein, den du nicht gezeigt hast - aber du hast es nicht gezeigt, also gibt es jetzt einen Weg, es zu wissen. – matt