添加UIView并将其平移,然后在释放触摸时将其删除

时间:2017-06-19 11:47:04

标签: ios swift uiview uibutton uigesturerecognizer

当用户点按按钮或按住按钮时,我尝试创建按钮 我的期望是当按下按钮时,创建新的UIView,它成为平移手势的第一响应者,并且当用户的触摸被释放时,UIView将从其超级视图中移除。 /> 此外,我的观点集中在用户点击按钮的位置。

现在,我已完成平移并添加视图并将其删除。但我有两个问题:

  • 视图的位置不会与用户点击按钮的位置同步。
  • 创建的新UIView并没有成为第一个响应者,意味着我需要释放按钮并触摸UIView来平移它。我需要它成为第一个响应者,当它出现时,我可以平移它。

这是我的代码:

private let myButton: UIButton = {
    let button = UIButton(type: UIButtonType.system)
    button.layer.cornerRadius = 4
    button.addTarget(self, action: #selector(addView), for: UIControlEvents.touchDown)
    button.translatesAutoresizingMaskIntoConstraints = false
    return button
}()

private let myCircularUIView: UIView = {
    let imageView = UIView()
    imageView.backgroundColor = UIColor.blue
    imageView.translatesAutoresizingMaskIntoConstraints = false
    return imageView
}()

@objc private func addView() {
    view.addSubview(myCircularUIView)
    view.becomeFirstResponder()
    myCircularUIView.frame = CGRect(origin: translation, size: CGSize(width: 100, height: 100))
    let gestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(panGesture(recognizer:)))
    self.view.addGestureRecognizer(gestureRecognizer)
}

private var translation = CGPoint(x: 0, y: 0)

@objc private func panGesture(recognizer: UIPanGestureRecognizer) {
    translation = recognizer.translation(in: self.view)
    myCircularUIView.transform = CGAffineTransform(translationX: translation.x, y: translation.y)
}

如果您需要任何额外信息,请告诉我而不是低估。

0 个答案:

没有答案