Swift: Жест в UITableViewCell не работает - PullRequest
0 голосов
/ 08 июня 2018

Мой результат Я хочу щелкнуть мышью, его изображение

Здравствуйте, я хочу добавить UIGestureRecognizer в UITableViewCell, но это не работает.

Вот мой код:

override func awakeFromNib() {
    super.awakeFromNib()
    // Initialization code
    let recognizer = UIPanGestureRecognizer(target: self, action: #selector(handlePan(recognizer:)))
    recognizer.delegate = self
    dragButton.addGestureRecognizer(recognizer)
}

override func setSelected(_ selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)

    // Configure the view for the selected state
}

func view(post: Post, user: User){
    self.post = post
    self.user = user

    contentLabel.text = post.content
    nameLabel.text = user.userName
}


@objc func handlePan(recognizer: UIPanGestureRecognizer) {
    let translation = recognizer.translation(in: dragButton)

    recognizer.view!.center = CGPoint(x: recognizer.view!.center.x + translation.x, y: recognizer.view!.center.y + translation.y)

    recognizer.setTranslation(CGPoint.zero, in: self.containerDragView)
}

override func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
    if let panGestureRecognizer = gestureRecognizer as? UIPanGestureRecognizer {
        let translation = panGestureRecognizer.translation(in: superview!)
        if fabs(translation.x) > fabs(translation.y) {
            return true
        }
        return false
    }
    return false
}

Не работает. Я не могу перетащить свой просмотр изображений

Что мне добавить, чтобы мой просмотр таблиц выполнял мой жест?

Окончательный результат, который мне нужен, когда я сдвигаю правую или левую кнопку, изображение вправо или влево расширяется по ширине

спасибо

1 Ответ

0 голосов
/ 08 июня 2018

Вам нужно инициализировать GestureRecognizer с целью и действием, например:

let pan = UIPanGestureRecognizer(target: self, action: #selector(self.handlePan(_:)))
pan.delegate = self
cell.addGestureRecognizer(pan)

Затем вы должны реализовать обработчик, который будет вызываться каждый раз, когда происходит событие касания:

func handlePan(sender: UIPanGestureRecognizer? = nil) {
    // handling code
}
...