2013-04-04 9 views
5

Ich habe einige UIButtons in einem UIScrollView, aber ich möchte nicht die Schaltfläche Berührungen verzögern. Sobald jedoch in der Bildlaufansicht ein Ziehen/Scrollen erkannt wird, möchte ich die UIButton-Berührung abbrechen und mit dem Scrollen von UIScrollView fortfahren.iOS UIScrollView Abbrechen UIButton Touch auf Bildlauf

ich folgendes enthalten sind, ...

_scrollView.delaysContentTouches = NO; 

... aber (natürlich) die Taste berühren abbrechen nicht, wenn geschleppt. Hat jemand irgendwelche Vorschläge, wie ich diese Funktionalität implementieren kann?

Antwort

7

Sie können diese Methode von UIScrollView überschreiben.

-(BOOL)touchesShouldCancelInContentView:(UIView *)view 
{ 
    return YES; 
} 

Und in Ihrem UIButton sollten Sie verschiedene Methoden für verschiedene Kontrollereignisse hinzufügen.

  1. zeigen Highlight-Effekt für UIControlEventTouchDown.
  2. Auslöserknopf für UIControlEventTouchUpInside | UIControlEventTouchUpOutside;
  3. klarer Hervorhebungseffekt für UIControlEventTouchCancel.
+1

Dies ist die gewünschte Lösung. Vielen Dank. – lucien

+0

Die UIControlEventTouchCancel war die einzige Benachrichtigung, die ich vermisste und es funktionierte. Vielen Dank! – cgossain

1

Sie können scrollViewWillBeginDragging verwenden, um eine Benachrichtigung abzubrechen und die Schaltfläche abzubrechen, indem Sie im Code Ihrer Schaltflächen darauf achten. Ich denke, das ist es, was Sie versuchen, aber ich bin mir nicht sicher, ob ich Ihre Frage richtig verstanden habe.

+0

Vielen Dank für Ihr Feedback. Ich habe scrollViewWillBeginDragging versucht, aber es wird nicht ausgelöst, wenn Sie vor dem Scrollen auf eine Schaltfläche tippen. Was ich will, ist einen Knopf zu tippen, aber keine Verzögerung. Wenn Sie dann Ihren Finger bewegen, während er noch nicht gedrückt ist, wird die Taste abgebrochen und das Bild wird gescrollt. – lucien

+0

Probieren Sie dies auf dem iOS-Startbildschirm ... tippen Sie auf eine App, und Sie werden feststellen, dass es dunkler wird, aber sobald Sie Ihren Finger ziehen, bricht die Berührung ab und scrollt stattdessen – lucien

+0

Sie wollen also die Schaltfläche sofort abfeuern eine Aktion, aber wenn die Scroll-Ansicht zum Löschen gezogen wird? Und wenn Sie einen Knopf drücken und dann ziehen, wird scrollViewWillBeginDragging nicht aufgerufen? Gutes Beispiel mit dem Homescreen. – Psiticosis

Verwandte Themen