Chcę móc przeciągać obiekty na ekranie, ale one nie będą. Próbowałem wszystkiego, ale wciąż nie mogę.Przeciągnij UIView Swift 3
Oto kod.
func panGesture(gesture: UIPanGestureRecognizer) {
switch gesture.state {
case .began:
print("Began.")
for i in 0..<forms.count {
if forms[i].frame.contains(gesture.location(in: view)) {
gravity.removeItem(forms[i])
}
}
case .changed:
let translation = gesture.translation(in: forms[1])
gesture.view!.center = CGPoint(x: gesture.view!.center.x + translation.x, y: gesture.view!.center.y + translation.y)
gesture.setTranslation(CGPoint.zero, in: self.view)
print("\(gesture.view!.center.x)=\(gesture.view!.center.y)")
print("t;: \(translation)")
case .ended:
for i in 0..<forms.count {
if forms[i].frame.contains(gesture.location(in: view)) {
gravity.addItem(forms[i])
}
}
print("Ended.")
case .cancelled:
print("Cancelled")
default:
print("Default")
}
}
Również mają grawitację. Formularze są kwadratami i okręgami.
Objaśnienie: w .began - wyłączenie grawitacji dla wybranego formularza. w .changed - próbuję zmienić współrzędne. w .end - włączam ponownie grawitację.
ScreenShot.
Komentarze nie są przeznaczone do rozszerzonej dyskusji; ta rozmowa została [przeniesiona na czat] (http://chat.stackoverflow.com/rooms/143103/discussion-on-answer-by-kirit-modi-draggable-uiview-swift-3). –
Wewnątrz draggedView użyłem zamiast tego sender.view, dzięki czemu mogłem ponownie użyć funkcji draggedView dla innych przeciągalnych widoków. – Neo42