Перетащите только что созданное подпредставление из collectionView, используя жесты панорамирования
У меня есть ViewController с базовым представлением коллекции ниже. Теперь я могу щелкнуть ячейку в представлении коллекции и добавить подпредставление выбранного изображения. Я застрял на том, чтобы позволить пользователю нажать на ячейку и перетащить новое подпредставление на главное изображение, при этом пользователю не нужно поднимать палец и повторно выбирать, активируя таким образом жест панорамирования.
Как программно инициировать жест панорамирования для вновь созданного подпредставления, так что кажется, что пользователь перетаскивает копию из collectionView?
func collectionView(collectionView: UICollectionView, didHighlightItemAtIndexPath indexPath: NSIndexPath) {
stickerImage = imageArray[indexPath.item]!
let priority = DISPATCH_QUEUE_PRIORITY_DEFAULT
dispatch_async(dispatch_get_global_queue(priority, 0)) {
dispatch_async(dispatch_get_main_queue()) {
// update UI on the main thread
var newImageView = UIImageView(image: self.stickerImage)
newImageView.userInteractionEnabled = true
newImageView.multipleTouchEnabled = true
newImageView.exclusiveTouch = true
newImageView.contentMode = .ScaleAspectFit
let panGesture = UIPanGestureRecognizer(target: self, action:Selector("handlePan:"))
panGesture.delegate = self
newImageView.addGestureRecognizer(panGesture)
newImageView.frame = self.view.bounds
newImageView.frame.size.width = 150
newImageView.frame.size.height = 150
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(self.reuseIdentifier, forIndexPath: indexPath) as! CollectionViewCell
newImageView.center.y = self.view.frame.height - collectionView.frame.height / 2
newImageView.center.x = cell.center.x
self.view.addSubview(newImageView)
self.view.bringSubviewToFront(newImageView)
}
}
}
func handlePan(recognizer:UIPanGestureRecognizer) {
self.view.bringSubviewToFront(recognizer.view!)
let translation = recognizer.translationInView(recognizer.view)
if let view = recognizer.view {
view.transform = CGAffineTransformTranslate(view.transform, translation.x, translation.y)
}
recognizer.setTranslation(CGPointZero, inView: recognizer.view)
}
1 ответ
Вы пробовали переопределять сенсорные методы как touchbegin и touchend. Переопределите эти методы, и вам не нужно заботиться о жесте панорамирования, просто нужно проверить вид, на котором распознается касание.