Добавлять жест на ярлык? - PullRequest
       27

Добавлять жест на ярлык?

0 голосов
/ 25 сентября 2018

Swift 4 iOS 11

Попытка добавить жест к метке с помощью этого кода, но он срабатывает, но не завершается с помощью нераспознанного селектора.

Пробовал с @objc и без, пробовал тоже с @selector (ViewController.copyURL), пробовал включить isUserInteractiveEnabled = true;нет работы

@IBOutlet weak var zeroURL: UILabel!

let press = UILongPressGestureRecognizer(target: zeroURL, action: #selector(copyURL))
view.addGestureRecognizer(press)

@objc func copyURL() {
    UIPasteboard.general.string = self.zeroURL.text
    print("copied")
    zeroURL.alpha = 0
    UIView.animate(withDuration: 0.75, delay: 0.25, options: [.curveEaseOut], animations: {
        self.zeroURL.alpha = 1.0
    }) { (status) in
        // do nothing
    }
}

Ответы [ 3 ]

0 голосов
/ 25 сентября 2018

Цель должна быть самостоятельной, вам нужно добавить в метку распознаватель жестов, а не представление

let press = UILongPressGestureRecognizer(target: self, action: #selector(copyURL))
zeroURL.addGestureRecognizer(press)

В первой строке здесь вы настраиваете распознаватель жестов, сообщая, что self.copyURLявляется целевым действием, используемым при распознавании этого жеста.Вторая строка добавляет жест к UILabel

0 голосов
/ 25 сентября 2018

Сделайте цель self вместо zeroURL, как показано ниже:

let press = UILongPressGestureRecognizer(target: self, action:#selector(copyURL))
zeroURL.addGestureRecognizer(press)

@objc func copyURL() {
    UIPasteboard.general.string = self.zeroURL.text
    print("copied")
    zeroURL.alpha = 0
    UIView.animate(withDuration: 0.75, delay: 0.25, options: [.curveEaseOut], animations: {
    self.zeroURL.alpha = 1.0
    }) { (status) in
        // do nothing
    }
}

РЕДАКТИРОВАТЬ : добавьте жест длительного нажатия на UILabel, только не на viewкак показано ниже:

zeroURL.addGestureRecognizer(press)
0 голосов
/ 25 сентября 2018

Замените это

let press = UILongPressGestureRecognizer(target: zeroURL, action: #selector(copyURL))
view.addGestureRecognizer(press)

на

let press = UILongPressGestureRecognizer(target: self, action: #selector(copyURL))
zeroURL.addGestureRecognizer(press)

, поскольку цель должна содержать реализацию метода селектора

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...