UIDatePicker在UIScrollView - iPhone应用程序中

时间:2011-06-26 02:43:42

标签: iphone uiscrollview uidatepicker

如何在我的iPhone应用程序中使用UIScrollView内的UIDatePicker。我无法滚动选择器上的日期,因为它认为我的手指正在控制UIScrollView。我正在尝试将UIDatePicker添加到我的UIVcrollView中,它位于我的UIViewController中。

3 个答案:

答案 0 :(得分:3)

您可以尝试将滚动视图的delaysContentTouches属性设置为NO。

但更好的方法是重新考虑你的用户界面。日期选择器在小型设备上占据屏幕的一半左右。即使你可以让日期选择器滚动而不是滚动视图,你也会将用户放在滚动滚动视图很难的位置。他们必须弄清楚,如果他们想要滚动滚动视图,他们需要触摸选择器的上方或下方...它只是不太好用。

一种解决方案可能是让用户点击日期,然后使用日期选择器呈现模态视图控制器。这会让用户选择一个新的日期,而不会有任何关于滚动的歧义。

答案 1 :(得分:1)

经过几次试验后,我发现这个问题的最佳解决方案是对包含日期选择器的滚动视图进行子类化并进行命中测试,以查看用户是否正在尝试触摸选择器。我在这个问题UIDatePicker inside UIScrollView with pages

中找到并修改了以下代码
- (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
    UIView* result = [super hitTest:point withEvent:event];
    if ([result.superview isKindOfClass:[UIPickerView class]] || [result.superview isKindOfClass:[UIDatePicker class]])
    {
        self.canCancelContentTouches = NO;  
        self.delaysContentTouches = NO;
    }
    else 
    {
        self.canCancelContentTouches = YES; // (or restore bool from prev value if needed)
        self.delaysContentTouches = YES;    // (same as above)
    }
    return result;
}

答案 2 :(得分:0)

当您想从选择器中选择数据时,另一个解决方案是从底部向上弹出。添加到您的视图(self.view)。