2017-01-20 53 views
2

我有以下代码添加一个手势识别到UILabel。勾选了故事板中标签上的用户交互已启用,但是当我点击标签时onUserClickingSendToken方法未被调用。点击手势识别添加到UILabel不起作用

class ViewController: UIViewController, MFMailComposeViewControllerDelegate { 

    @IBOutlet weak var tokenDisplay: UILabel! 
    var tapGestureRecognizer:UITapGestureRecognizer = UITapGestureRecognizer(target:self, action: #selector(onUserClickingSendToken(_:))) 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     tapGestureRecognizer.numberOfTapsRequired = 1 
     tokenDisplay.addGestureRecognizer(tapGestureRecognizer) 
    } 

    func onUserClickingSendToken(_ sender: Any) 
    { 
     .... 
+1

确保其属性的用户交互设置为true进行定位的自我。它的默认值是false。 https://developer.apple.com/reference/uikit/uilabel/1620543-isuserinteractionenabled –

+0

我已经添加了一行tokenDisplay.isUserInteractionEnabled = true以确保它仍然无效。 – Gruntcakes

+0

我已经有一个断点和一个NSLog来检查它没有被调用。 – Gruntcakes

回答

1

初始化在viewDidLoad中的tapRecognizer应该这样做,因为你之前的观点被初始化

class ViewController: UIViewController, MFMailComposeViewControllerDelegate { 

@IBOutlet weak var tokenDisplay: UILabel! 
var tapGestureRecognizer:UITapGestureRecognizer! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    tapGestureRecognizer = UITapGestureRecognizer(target:self, action:  #selector(onUserClickingSendToken(_:))) 
    tapGestureRecognizer.numberOfTapsRequired = 1 
    tokenDisplay.isUserInteractionEnabled = true 
    tokenDisplay.addGestureRecognizer(tapGestureRecognizer) 
} 

func onUserClickingSendToken(_ sender: Any) 
{ 
    .... 
+1

tapGestureRecognizer.isUserInteractionEnabled = true 这是不可能的。编辑过的 –

+0

,应该放在标签上 –

0

试着改变你的选择设置到:

#selector(ViewController .onUserClickingSendToken(_:)

+0

感谢您的建议,但它没有效果 – Gruntcakes