これが尋ねられたかどうかはわかりませんが、解決策を見つけることができませんでした。私はボタン上にパンニングジェスチャーを実装していますが、そのアイデアは:ボタンはある位置に固定されています。ユーザーがドラッグすると、ボタンのコピーが作成され、ジェスチャーとともに移動します。元のものは最初の位置にとどまります(ビューには2つのボタンがあります)。パンが終了すると、新しいボタンがいくつかの処理に使用され、その後は消えてしまいます(元のボタンはそのままの状態ですので、このプロセス全体が繰り返されます)。現在、私が持っているものは以下の通りです: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
}
しかし、新しいボタンは私のビューには表示されません。これを解決する方法を知ってもいいですか?