我是否在正确的路径上尝试从UIScrollView拖动项目并将其放在第二个UIScrollView上? UIScrollViews最终都不会被更改,但是我希望图像跟随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来查看用户是否已向上拖动,但触摸已降低并且始终无法调用。如果触摸在同一个UIScrollView上开始和结束,则可以正常工作,但是当拖动时,touchesEnd不会被调用。
答案 0 :(得分:0)
哟不能“直接”将对象(视图,图像视图,标签,按钮等)从一个视图拖动到另一个视图(无论是UIView还是UIScrollView或任何其他容器)。
相反,您需要将要拖动的对象从包含视图“移动”到超级视图(“主”视图),将其作为主视图的子视图拖动,然后检查它的位置释放。
所以,基本上,如果你想拖动UIImageView: