2011-01-17 4 views
3

Ich habe einen UIDatePicker in einem UIScrollView. Der UIDatePicker reagiert jedoch nicht auf Scroll-Berührungen. Es ist der Scrollview, der scrollt. Als ich einige Dokumente im Internet gelesen habe, habe ich "Delay Content Touches" auf "NO" gesetzt, und jetzt sehe ich, wie der Datepicker einen leichten Scroll startet, aber es ist immer noch der Scrollview, der das letzte Wort nimmt. Ich habe einen Platz auf dem Bildschirm, wo der Benutzer berühren kann, um die Ansicht zu scrollen. Wie kann ich die beiden Schriftrollen trennen und den Datepicker auf normale Weise scrollen lassen?iPhone - UIScrollView und UIDatePicker Scrolling-Konflikt: der eine interfer mit der zweiten

Vielen Dank für Ihre Hilfe

+0

Es gibt eine große Antwort auf diese Frage [hier] [1]. [1]: http://stackoverflow.com/questions/935521/uidatepicker-inside-uiscrollview-with-pages –

Antwort

5

gelöst, dass Post mit: http://www.alexc.me/uiscrollview-and-uidatepicker/153/

einfach die Klasse machen mit diesem Code hinein:

UIScrollViewBreaker.h

@interface UIScrollViewBreaker : UIScrollView { 

} 

- (BOOL)touchesShouldBegin:(NSSet *)touches withEvent:(UIEvent *)event inContentView:(UIView *)view; 
- (BOOL)touchesShouldCancelInContentView:(UIView *)view; 

@end 

UIScrollViewBreaker. m

@implementation UIScrollViewBreaker 


- (BOOL)touchesShouldBegin:(NSSet *)touches withEvent:(UIEvent *)event inContentView:(UIView *)view { 

    if ([view isKindOfClass:[UIDatePicker class]] || [@"UIPickerTable" isEqualToString:[[view class] description]]) { 
     //|| [view isKindOfClass:[UIPicker class]] 
     return YES; 
    } 
    return [super touchesShouldBegin:touches withEvent:event inContentView:view]; 
} 

- (BOOL)touchesShouldCancelInContentView:(UIView *)view { 
    if ([view isKindOfClass:[UIDatePicker class]] || [@"UIPickerTable" isEqualToString:[[view class] description]]) { 
     return NO; 
    } 
    return [super touchesShouldCancelInContentView:view]; 
} 


@end 

Und in IB, setzen Sie die Klasse der UIScrollView zu UIScrollViewBreaker.

Und es ist fertig.

Vergessen Sie nicht, einen Platz auf der Ansicht zu lassen, damit der Benutzer den Bildlauf durchblättern kann.

Verwandte Themen