【问题标题】:Another drag and drop question on iPhoneiPhone上的另一个拖放问题
【发布时间】:2010-03-18 09:57:09
【问题描述】:

我试图为以下问题找到一个简单的解决方案。 我有一个主视图,其中包含一个瓷砖。我想将它拖放到 UITableView 上。我已经可以使用 UIGestureRecognizer 对拾取和拖动进行编程了。

现在我的问题是如何在表格视图中检测到有一个项目将被拖到它上面。例如,当磁贴移到上面时,我想突出显示给定的行。

我尝试将 touchesMoved/Began/Ended 事件添加到 viewCell。当我将图块拖到它上面时,它们不会着火(换句话说,图块将 viewCell 的一部分隐藏在我的手指下)。当上面没有拖动瓷砖时,它们会被解雇。

有没有一种有效的hittest方法?

谢谢。

【问题讨论】:

    标签: iphone ipad


    【解决方案1】:

    这里有一大堆 UI 问题需要解决。

    • 一般来说,在 iPhone 上拖放是个坏主意。这很难做到,而且获得反馈也会有问题,因为你的手指会阻碍拖动操作
    • 使用表格的选定单元格表示“可投放性”可能会被应用商店审核者拒绝;它表示“我已经选择了这个单元格”,而不是“我会在上面放点东西”

    也就是说,您可能希望在“源”视图中管理所有触摸事件,并从那里发送表格消息,而不是尝试处理消息。一旦您的 -touchesBegan:withEvent: 在一个视图中被调用,所有后续的 -touchesMoved:withEvent: 和 -touchesEnded:withEvent: 都将被发送到该视图以进行该触摸的生命周期;转发它们会使所有相关人员感到困惑。

    【讨论】:

    • 感谢本的回答。第一部分:我的应用程序将是一个 iPad 应用程序。对于第二部分:我不明白你的意思。为了让我的问题变得简单:我想将一张照片拖放到 tableview 行上。我开始拖动。完美运行。但是,当我将照片拖到它们上方时,不会调用 cellview 的 touchesBegan/Moved/Ended。那么我怎么知道哪一行会被丢弃呢?
    • 您需要通过查看表格中每个单元格的框架来计算它。可能是表或 viewController 上的 -cellForPoint: 方法。
    • 谢谢 Ben,这就是最终提出的解决方案。我希望有一个更短的解决方案。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-06
    • 1970-01-01
    • 2018-03-09
    • 1970-01-01
    相关资源
    最近更新 更多