3

我有一个UIPickerView像这样工作的动态:

  • 仅从 1 个组件开始
  • 选择一行时,添加一个新组件

为了精确起见,我所说的组件是指列。

我只想激活我最后添加的组件。其他人应该完全禁用,甚至不能滚动或选择行。

我已经知道如何动态添加一个组件,但我不知道要禁用一个。

有什么办法吗?

4

2 回答 2

3

我不知道在不完全自己实现的情况下禁用组件的方法,但是您可以做的是一次仅显示一个组件并添加带有“后退”按钮的附件视图,例如,如果您是选择一个位置,您将显示一个带有状态的组件,当用户选择一个州时,您将用该州的城市名称替换该组件,并添加一个“后退”按钮让他们在必要时回溯。对于您想要做的事情,这是我所知道的最干净的解决方案。

如果您绝对必须“禁用”一个组件,您将别无选择,只能继承 UIPickerView 并覆盖 touchesBegan:withEvent 和类似方法以基本上忽略对其他组件的触摸。要“禁用”,您可以在禁用的组件上放置一个 alpha < 1.0 的灰色层。我必须警告你,如果没有正确实施,这可能会变得丑陋并产生不可预见和不良后果。祝你好运。

于 2013-01-10T19:35:00.640 回答
1

我创建了两个 UIView,一个用于保存选择器,另一个用于启用用户输入以捕获触摸的子视图。将它放在组件上,您可以根据需要切换 userInputEnabled。

于 2014-06-14T15:29:29.120 回答