2015-11-19 2 views
1

Я просто создал два движущихся/перетаскиваемым UIImageView которые должны двигаться по большей UIImageView ниже, как показано на следующем скриншоте:Swift: как управлять несколькими перетаскиваемых UIImageViews с touchesBegan/Переехал

enter image description here

И это мой код:

class PhotoViewController: UIViewController, UINavigationControllerDelegate, UIImagePickerControllerDelegate { 


@IBOutlet weak var imageView: UIImageView! 
@IBOutlet weak var redA: UIImageView! 
@IBOutlet weak var redB: UIImageView! 

var imagePicker: UIImagePickerController! 
var redLocationA:CGPoint = CGPoint(x:0, y:0) 
var redLocationB:CGPoint = CGPoint(x:0, y:0) 

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.redA.center = CGPointMake(80, 330) 
    self.redB.center = CGPointMake(80, 360) 
    // Do any additional setup after loading the view, typically from a nib. 
} 


override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 
    self.redLocationA = (touches.first?.locationInView(self.view))! 
    self.redA.center = redLocationA 

    self.redLocationB = (touches.first?.locationInView(self.view))! 
    self.redB.center = redLocationB 
} 

override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) { 

    self.redLocationA = (touches.first?.locationInView(self.view))! 

    if ((redLocationA.x >= 26 && redLocationA.x <= 292) && (redLocationA.y >= 71 && redLocationA.y <= 461)){ 
     redA.center = redLocationA 
    } 

    if ((redLocationB.x >= 26 && redLocationB.x <= 292) && (redLocationB.y >= 71 && redLocationB.y <= 461)){ 
     redB.center = redLocationB 
    } 

    print("redA: \(redLocationA)") 
    print("redB: \(redLocationB)") 
} 

... 
} 

Как вы можете себе представить, когда я нажимаю на булавку то и другое перемещается в положение первого и это, я думаю, потому что я всегда выполнять сек ame от touches: Set<UITouch>. Каков правильный способ управления обоими выводами без положения первого, перезаписывается в позиции второго при каждом нажатии? Спасибо

ответ

1

Если вы хотите, чтобы нажать и перетащить ImageView вокруг, вы должны добавить panGestureRecognizer к каждому ImageView

+0

Мда ... Я последовал за учебник на Youtube, благодаря которому я написал код, я думал, что это был правильным. Я понятия не имею об panGestureRecognizer ... если вы можете связать мне хороший учебник, я был бы признателен –

+0

Я не знаю, с каким учебником вы хорошо справляетесь, но если вы google UIPanGestureRecognizer или даже UIGestureRecognizer, они не слишком сложны , Вот документация, если это помогает: https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIPanGestureRecognizer_Class/ – Tyrelidrel

Смежные вопросы