我已经在UIScrollView中添加了UIPickerView,但现在UPickerView不能滚动。当我将它添加到self.view中时,它会平滑地滚动。下面是我的代码
monthsArray = [[NSArray alloc] initWithObjects:@"Jan",@"Feb",@"Mar",@"Apr",@"May",@"Jun",@"Jul",@"Aug",@"Sep",@"Oct",@"Nov",@"Dec",nil];
UIPickerView *objPickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(185,350,100,100)];
objPickerView.userInteractionEnabled=YES;
objPickerView.delegate = self;
objPickerView.showsSelectionIndicator = YES;
[objScrollView addSubView:objPickerView];
我已经包含了委托及其方法。看一下这个问题。提前谢谢。
如果我说不清楚,请告诉我。
发布于 2012-02-06 03:23:01
出于同样的目的,我使用了UIPickerView的一个子类,但我的要简单得多:
@implementation ScrollablePickerView
- (UIScrollView *)findScrollableSuperview {
UIView *parent = self.superview;
while ((nil != parent) && (![parent isKindOfClass:[UIScrollView class]])) {
parent = parent.superview;
}
UIScrollView* scrollView = (UIScrollView *)parent;
return scrollView;
}
- (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent*)event {
UIScrollView* scrollView = [self findScrollableSuperview];
if (CGRectContainsPoint(self.bounds, point)) {
scrollView.canCancelContentTouches = NO;
scrollView.delaysContentTouches = NO;
} else {
scrollView.canCancelContentTouches = YES;
scrollView.delaysContentTouches = YES;
}
return [super hitTest:point withEvent:event];
}
@end
效果很不错--至少对我来说是这样。
发布于 2011-04-22 21:08:19
我猜这可能会解决你的问题(一定要检查评论):
http://www.alexc.me/uiscrollview-and-uidatepicker/153/
基本上,您必须在滚动视图上将DelaysContentTouches和CanCancelContentTouches设置为NO,因为它会从选择器中窃取触摸事件。
发布于 2011-01-25 20:48:50
UIPickerView根本不是为滚动或移动而设计的。您应该放置一些文本字段,并在用户点击时显示UIPickerView。
https://stackoverflow.com/questions/4793535
复制相似问题