将 UIView 拖放到另一个(UIPanGesture 识别器)中
Posted
技术标签:
【中文标题】将 UIView 拖放到另一个(UIPanGesture 识别器)中【英文标题】:drag and drop UIView inside another (UIPanGesture recognizer) 【发布时间】:2017-06-05 15:51:29 【问题描述】:我正在尝试将屏幕上的 UIView 拖到另一个 UIView 中 我在拖放时比较他们的帧以检查是否(bead1 与帧中的 hole1 匹配) 我可以拖放就好了,但问题是当我拖动(bead2 到孔 2)时,bead1 自动放置在 hole1 中(就像代码中的第二个 IF 变为 true) 请帮助这里的功能:
func draggingView(_ sender: UIPanGestureRecognizer)
let point = sender.location(in: view)
let draggingView = sender.view!
draggingView.center = point
print(point)
if sender.state == .ended && bead1.frame.midX !=
hole1.frame.midX
print("false")
bead1.center = CGPoint (x: view.frame.width / 2 - 25, y:
view.frame.height / 2)
if sender.state == .ended && bead1.frame.midX ==
hole1.frame.midX
bead1.center = hole1.center
imageToShow.isHidden = false
// sender.isEnabled = false
print("True")
if sender.state == .ended && bead2.frame.minX - 10 !=
hole2.frame.minX - 10
print("false")
bead2.center = CGPoint (x: view.frame.width / 2 + 25, y:
view.frame.height / 2)
if sender.state == .ended && bead2.frame.minX - 10 == hole2.frame.midX
- 10
bead2.center = hole2.center
imageToShow.isHidden = false
// sender.isEnabled = false
print("True")
【问题讨论】:
【参考方案1】:我终于可以修好了.. 我实际上需要检查一个 UIView 是否包含另一个 UIView,然后将每个 UIView 与另一个标签进行比较(我需要为每个 UIView 设置一个标签),如下所示..
hole1.tag = 1
bead1.tag = 1
if hole1.tag == bead1.tag
print("Bead1 IS IN!")
else
print("bead1 IS OUT!!!!")
然后 检查它是否包含其他的中心
if bead1.frame.contains(hole1.center)
【讨论】:
以上是关于将 UIView 拖放到另一个(UIPanGesture 识别器)中的主要内容,如果未能解决你的问题,请参考以下文章
将 UIView 从 UIPopOverController 中的 UIScrollView 拖放到主 UIViewController?
bringSubviewToFront 将 UIView 移回原始位置
UIView alpha = 0 导致触摸被拖放到下面的视图