gpt4 book ai didi

ios - 从 ScrollView 中拖出一个项目

转载 作者:行者123 更新时间:2023-11-30 12:01:27 25 4
gpt4 key购买 nike

尝试从 UIScrollView 中拖动项目并将其放在第二个 UIScrollView 上时,我的路径是否正确?这两个 UIScrollView 最终都不会改变,但我想让图像跟随 touchMoved 位置,直到它在第二个 UIScrollView 上释放。

我扩展了 UIScrollView,以便可以看到 UIScrollView 内触摸开始的位置。

extension UIScrollView {
override open func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
self.next?.touchesBegan(touches, with: event)
print("touchesBegan")
}
}

获取触摸的对象

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {

if let touch = touches.first {
beginningLocation = touch.location(in: self.view)
let position = touch.location(in: itemScrollview)
print("itemScrollview: \(position)")

let whoHit = Int(position.x / 120)
print("whoHit: \(whoHit) \(GameData.items[whoHit].name)")
}
}

我试图使用touchesEnded来查看用户是否向上拖动,但touchesEnded并不总是被调用。如果触摸在同一个 UIScrollView 上开始和结束,则有效,但是当拖离时,touchesEnd 不会被调用。

最佳答案

您无法“直接”将对象( View 、 ImageView 、标签、按钮等)从一个 View 拖动到另一个 View (无论是 UIView 或 UIScrollView 还是任何其他容器)。

相反,您需要将要拖动的对象从包含 View “移动”到 super View (“主” View ),将其作为主视图的 subview 拖动,然后检查它在哪里已发布。

所以,本质上,如果你想拖动 UIImageView:

  • 第一次触摸时,将 ImageView 从其包含 View 移动到“主” View
  • 平移坐标,使它们现在相对于“主” View
  • 跟踪主视图坐标中的触摸/拖动,随时重新定位 ImageView
  • 释放时,查看结束触摸是否位于“目标”容器 View 内
  • 如果是,则将 ImageView 添加为目标 View 的 subview (转换位置坐标)
  • 如果它不在目标框架内,请将其添加回其原始容器,或将其放入主视图中,或蒸发它,或任何您想要的。

关于ios - 从 ScrollView 中拖出一个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47161542/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com