Tôi thêm UITapGestureRecognizer:tapGesture
, tôi muốn rằng khi tôi nhấp (chạm) nhãn, klikPlay()
sẽ chạy các hành động của nó.Thêm TapGestureRecognizer vào UILabel trong Swift
khi tôi chạy mã và bấm/chạm vào nhãn, nó mang lại cho lỗi này:
unrecognized selector sent to instance.
Đó là về nhãn Player(named: label)
, các UITapGestureRecognizer(named:tapGesture)
và chức năng klikPlay
Tôi đang làm gì sai ?
override func didMoveToView(view: SKView) {
let background = SKSpriteNode(imageNamed: "bgStart2")
background.position = CGPoint(x:0, y:0)
background.anchorPoint=CGPoint(x:0,y:1.0)
background.size = frame.size
addChild(background)
//label Play
var label: UILabel = UILabel()
label.frame = CGRectMake(frame.size.width/4, frame.size.height/9, frame.size.width, frame.size.height/6)
label.text = "Play"
label.font = UIFont(name: "Noteworthy-Bold", size:50)
label.textColor = UIColor.whiteColor()
label.textAlignment = NSTextAlignment.Center
label.center = CGPointMake(frame.size.width/2, 4 * frame.size.height/8)
label.hidden = false
//label map
var label2: UILabel = UILabel()
label2.frame = CGRectMake(frame.size.width/4, frame.size.height/9, frame.size.width, frame.size.height/6)
label2.text = "Map"
label2.font = UIFont(name: "Noteworthy-Bold", size:50)
label2.textColor = UIColor.whiteColor()
label2.textAlignment = NSTextAlignment.Center
label2.center = CGPointMake(frame.size.width/2, 5 * frame.size.height/8)
label2.hidden = false
//label sounds
var label3: UILabel = UILabel()
label3.frame = CGRectMake(frame.size.width/4, frame.size.height/9, frame.size.width, frame.size.height/6)
label3.text = "Sounds"
label3.font = UIFont(name: "Noteworthy-Bold", size:50)
label3.textColor = UIColor.whiteColor()
label3.textAlignment = NSTextAlignment.Center
label3.center = CGPointMake(frame.size.width/2, 6 * frame.size.height/8)
label3.hidden = false
//label info
var label4: UILabel = UILabel()
label4.frame = CGRectMake(frame.size.width/4, frame.size.height/9, frame.size.width, frame.size.height/6)
label4.text = "Info"
label4.font = UIFont(name: "Noteworthy-Bold", size:50)
label4.textColor = UIColor.whiteColor()
label4.textAlignment = NSTextAlignment.Center
label4.center = CGPointMake(frame.size.width/2, 7 * frame.size.height/8)
label4.hidden = false
self.view?.addSubview(label)
self.view?.addSubview(label2)
self.view?.addSubview(label3)
self.view?.addSubview(label4)
label.userInteractionEnabled = true
label2.userInteractionEnabled = true
label3.userInteractionEnabled = true
label4.userInteractionEnabled = true
//the UITapGestureRecognizer
let tapGesture = UITapGestureRecognizer(target: self, action: "klikPlay:")
label.addGestureRecognizer(tapGesture)
view.addGestureRecognizer(tapGesture)
//the functions I want to run
func klikPlay(sender:UITapGestureRecognizer){
var scene:GameScene!
self.runAction(SKAction.sequence([SKAction.waitForDuration(0.0),
SKAction.runBlock({
// var transition:SKTransition = SKTransition.flipHorizontalWithDuration(0.5)
var scene1:SKScene = GameScene(size: self.size)
self.view?.presentScene(scene1)
label.removeFromSuperview()
label2.removeFromSuperview()
label3.removeFromSuperview()
label4.removeFromSuperview()
background.removeFromParent()
})
]))
}
}
cảm ơn bạn nhưng khi tôi làm điều đó, các nhãn không được công nhận trong hàm klikplay nữa vì chúng được khai báo trong hàm viewDidLoad. làm thế nào để tôi sửa lỗi đó? cảm ơn bạn! – DNC
Bạn cần khai báo chúng dưới dạng biến mẫu của lớp học - xem cập nhật của tôi. –
Đừng quên bật 'userInteractionEnabled' cho' UILabel' ... – Chris