如何控制UIPickerView组件的滚动?

时间:2012-08-07 16:30:50

标签: iphone ios uipickerview

当第一个组件仍在滚动时,是否可以阻止UIPickerView中第二个组件的滚动? 即让用户一次只滚动一个组件。

如果是,你建议做什么?

2 个答案:

答案 0 :(得分:1)

执行此操作最简单的方法可能是使用透明视图覆盖选取器,该选择器在滚动时基本上可以丢弃触摸事件。我相信您需要发明一种算法来确定选择器是否在滚动 - 例如,您的dataSource是否被要求提供有关某个部分的信息。

当您收到此消息时:didSelectRow:然后您知道滚动已停止。

在透明视图中,您需要基本上覆盖选择器,并且只允许事件通过超出活动段的事件。我没有特别这样做,但已阅读其他人这样做。您应该能够在本网站或iOS活动的Apple文档中找到关于“吃”或“通过”事件的说明。

另外,如果是我,我会在透明视图中添加三个半透明视图,并为每个颜色的不同颜色着色,这样您就可以确定是否正确分割了覆盖层(即每个部分)正好在你要阻止的段上。

答案 1 :(得分:0)

您必须升级UIScrollView并覆盖touchesShouldBegin和touchesShouldCancelInContentView方法。

然后你可以有几个选项最容易将一个bool变量设置为false如果一个正在移动,并且如果bool为false则触摸应该取消返回true。

无论如何我都会这样做。