Я не уверен, было ли это задано или нет, но мне не удалось найти решение. Я реализую жест панорамирования на кнопке, но идея такова: кнопка закреплена на позиции, а когда пользователь ее перетаскивает, копия кнопки создается и перемещается с жестом; первоначальный находится в своем первоначальном месте (так что в представлении будут две кнопки). Когда панорамирование заканчивается, новая кнопка используется для некоторой обработки, и после этого она должна исчезнуть (исходная остается такой, как есть, поэтому весь этот процесс может повторяться). В настоящее время то, что у меня есть:iOS: перетаскивание копии кнопки
private func addPanGesture() {
for btn in self.selectors { //selectors is a list of buttons which needs this gesture
let pan = UIPanGestureRecognizer(target: self, action:#selector(self.panDetected(_:)))
pan.minimumNumberOfTouches = 1
pan.maximumNumberOfTouches = 1
btn.addGesturerecognizer(pan)
}
}
@objc private func panDetected(_ panGesture: UIPanGestureRecognizer) {
var translation = panGesture.translation(in: view)
panGesture.setTranslation(CGPoint(x: 0, y: 0), in: view)
var newButton = UIButton()
if let initButton = panGesture.view as? UIButton {
print ("Button recognized!") // this msg is printed out
newButton.center = CGPoint(x: initButton.center.x + translation.x, y: initButton.center.y + translation.y)
newButton.setImage(UIImage(named: "somename"), for: .normal)
}
if panGesture.state == UIGestureRecognizerState.began {
self.view.addSubview(newButton)
}
if panGesture.state == UIGestureRecognizerState.ended {
//some other processing
}
if panGesture.state == UIGestureRecognizerState.changed {
self.view.addSubview(newButton)
}
// printed-out msgs show began, ended, changed states have all been reached
}
Но новая кнопка не отображается на мой взгляд. Могу ли я узнать, как это решить?