Как сделать так, чтобы картинка появлялась в другом месте при каждом нажатии, а не копировалась - PullRequest
0 голосов
/ 27 мая 2020

Когда я делаю долгое нажатие, у меня отображается изображение. А если я сделаю 10 длинных лент, то покажу 10 изображений. И мне нужно убедиться, что я делаю долгое нажатие, и изображение появляется, а затем я снова делаю долгое нажатие, и оно отображается, но в другом месте, и если я сделаю 10 долгих нажатий, изображение будет отображаться на последнем длинном коснитесь.

мой код:

 @objc func longPressHappened(gesture: UILongPressGestureRecognizer) {
    if gesture.state == .began {
      let tapLocation = gesture.location(in: self.mScrollView)
      let imageView = UIImageView(image: UIImage(named: "pimp"))
      imageView.center = CGPoint(x: tapLocation.x, y: tapLocation.y - imageView.frame.height / 2)
      CSImageView.addSubview(imageView)
    }
  }


override func viewDidLoad() {
    super.viewDidLoad()
    let longRecognizer = UILongPressGestureRecognizer(target: self, action: #selector(longPressHappened))
    longRecognizer.minimumPressDuration = 1
    longRecognizer.delaysTouchesBegan = false
    view.addGestureRecognizer(longRecognizer)
  }
}

Подскажите, как сделать такую ​​функциональность.

1 Ответ

1 голос
/ 27 мая 2020

Каждый раз, когда вы создаете новый экземпляр UIImageView, вместо этого повторно используйте тот же экземпляр UIImageView. Итак, вам нужно объявить imageView за пределами функции. Вот какой-то код:

let imageView = UIImageView(image: UIImage(named: "pimp"))

@objc func longPressHappened(gesture: UILongPressGestureRecognizer) {
    if gesture.state == .began {
      let tapLocation = gesture.location(in: self.mScrollView)
      imageView.center = CGPoint(x: tapLocation.x, y: tapLocation.y - imageView.frame.height / 2)
      CSImageView.addSubview(imageView)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...