Verhindern, dass touch-Ereignisse auf Untersichten von Blättern UIScrollView in iOS7
Habe ich ein UIControl innerhalb eines UIScrollView. In meinem UIControl ist init
ich rig einige touch-event-Handler, z.B.
[self addTarget:_delegate
action:@selector(touchedDown) forControlEvents:UIControlEventTouchDown];
iOS6 und iOS7 anders Verhalten, wenn ich den folgenden Code:
- Streichen der UIScrollView zu starten, scrollen
- Tippen Sie auf das UIScrollView um das scrollen zu stoppen
In iOS6, meine app wird weiterhin Verhalten, als gedacht: Tippen Sie auf die am Schritt #2 ist nicht nennen touchedDown
-- das UIScrollView schluckt den touch-event, da es sofort aufhört zu scrollen.
Aber in iOS7, das UIScrollView bewegt sich nicht mehr, wie erwartet, während touchedDown
ist immer noch als.
War es eine dokumentierte API ändern? Ich würde gerne meine app gleich Verhalten, um in iOS6 iOS7.
- Hier gilt das gleiche mit UIButtons auf einem UIScrollView. In iOS6 kann man streichen der UIScrollView durch klicken auf eine Schaltfläche und die UIControlEventTouchDown wird nicht aufgerufen werden, auf die Schaltfläche. In iOS7 UIControlEventTouchDown aufgerufen werden.
Du musst angemeldet sein, um einen Kommentar abzugeben.
workaround für iOS 7
Ersetzen Sie einfach die event-Typ -
UIControlEventTouchDown
mussUIControlEventTouchUpInside
Nicht sehr elegant, aber in Ermangelung einer besseren Ideen, hier ist, was das arbeiten für mich jetzt:
canCancelContentTouches
zuYES
unddelaysContentTouches
zuNO
.userInteractionEnabled
- Eigenschaft, wenn der UIScrollView scrolls:touchesCancelled:withEvent
umkehren, was dieUIControlEventTouchDown
handler:Gleiche hier mit UIButtons auf einem UIScrollView. Dies ist meine Lösung für jetzt.
Anstatt den Inhalt UIControlEventTouchDown Veranstaltung:
Ich umgesetzt der UIResponder touchesEnded Methode in meinem content UIViewController:
Berührt der Benutzer den Inhalt und beginnt mit dem ziehen der touchesEnded-handler wird nicht aufgerufen. Der UIResponder touchesCanceled Methode.
Wenn der Benutzer nicht ziehen Sie das UIscrollview die touchesEnded-handler ausgelöst wird, die verwendet werden können, für die touch-Logik.