UITableView.tableFooterView中的UIPickerView没有接收拖动触摸

时间:2011-01-05 21:12:28

标签: iphone cocoa-touch uitableview touch uipickerview

我在表格的页脚中有一个UIPickerView(我计划从中发出“分页”式的表格请求 - 选择器将列出我正在导航的LARGE数据集的可用页面,并让用户直接跳转到数据的任何“页面”。

我的选择器接收水龙头;如果我点击一个不是所选择的选择器的一行,它会进入选择器的中心空间。但如果我将手指放在拾取器上,我会滚动TABLE,而不是选择器内容。

我尝试在我的tableFooterView中安装一个UIView子类,看看我是否可以捕捉到触摸,我可以......但不会触及选择器。接触选择器确实触发了UIView子类的-touchesBegan。但不是挑选者本身的那些。

1 个答案:

答案 0 :(得分:8)

这是最终工作的结果。

我把我的表变成了UITableView的子类(叫做PickerSensitiveUITableView)。

我实现了这个方法:

- (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
    UIView* result = [super hitTest:point withEvent:event];

    if ([result.superview isKindOfClass:[UIPickerView class]])
    {
          self.scrollEnabled = NO;
    }
    else 
    {
          self.scrollEnabled = YES;    
    }
    return result;
}

所以现在当触摸发生在拾取器的边界内时(实际上是表中的任何选择器!)它会关闭UITableView的可滚动性。

在我看来,更通用的解决方案是将其作为UIScrollView上的类别。问题不在于表格与UIScrollView一样,UITableView是...的子类。