2011-04-23 44 views
0

我决定不再使用UIPickerView ......它在功能,设计和尺寸(高度)方面完全不灵活。它偶尔也会卡在行之间,并且在放开轮子和委托方法被触发之间发生的延迟表明已经选择了新行(因为“稳定”动画)导致了很多问题。我一直在努力的应用程序的上下文。关于如何从头开始创建UIPickerView的任何想法?

这就是说,UIPickerView的用户友好的方面是好的,我想尝试复制它。我试图研究这可能会做的不同方式,但没有太大的成功。有没有人有任何想法,以涉及从头开始类似的事情?

我试图让一个UITableView子类以这样的方式行事:当前任何单元格在表格中间(它会在拖动时发生变化等)将其背景颜色更改为不同的暗示它被“选中”。只要表格被拖动,使得“选定”单元不再处于中间,则单元将恢复正常,并且新的中间单元会改变颜色。所以这就像UIPickerView一样,你不必点击一个单元格;相反,您只需拖动以默认选中一个。

我觉得应该很容易截取UITableView的“touchesMoved”方法,并添加一些循环遍历表中所有当前可见单元的代码,检查它们的框架是否与表的中心点重叠,并相应地改变其外观(并根据需要向其他类发送通知以指示“选择”改变)。不幸的是,我不能得到这个工作,因为当我拖动表格时,“touchesMoved”方法不会被调用。我错过了明显的东西吗?

在这一点上,任何想法或建议都将非常赞赏......我制作了一个严重依赖UIPickerView对象的应用程序,并且由于我遇到的问题,我必须放弃它除非我能想出一个办法来完成这项工作。

非常感谢,

克里斯

回答

4

请记住,一个UITableView是一个UIScrollView的子类,而得到的UITableViewDelegate所有UIScrollViewDelegate方法调用了。听起来好像很容易就能知道表格视图何时滚动。

至于查找哪一行在视图的中间,只需使用indexPathForRowAtPoint:

+0

这正是我所期待的。有了这两种方法,这将比我原先做出来的要简单得多......感谢您的帮助......非常感谢! – 2011-04-24 01:19:12

+0

果然,你的建议效果很好。现在我已经有了一些或多或少的设置(包括在新单元格移动到表格中心时触发的委托方法),但是我的自定义UITableView仍然缺少UIPickerView的一个基本方面,那就是如果你选择顶部或底部的行,它们应该在表格中垂直居中(即使这意味着占用表格的空白空间)。我已经看过UIScrollView和UITableView的文档,但没有运气。任何想法,如果这是相对容易做到的? – 2011-04-24 06:26:13

+0

@chrisb:尝试为'contentInset'设置合适的顶部和底部插入符 – Anomie 2011-04-24 13:12:32

相关问题