[英]Getting UITapGestureRecognizer's sender in Swift
所以我正在研究一種選擇器,它提醒用戶平移對象而不是點擊它。 以下代碼是動畫:
func labelTapped(sender:UITapGestureRecognizer)->Void{
UIView.animateWithDuration(0.2, delay: 0, options: UIViewAnimationOptions.CurveEaseIn, animations: {
sender.view.frame = CGRectMake(sender.view.frame.origin.x + 15, sender.view.frame.origin.y, sender.view.frame.width, sender.view.frame.height)
}, completion:
{(value:Bool) in
UIView.animateWithDuration(0.2, delay: 0, options: UIViewAnimationOptions.CurveEaseOut, animations: {
sender.view.frame = CGRectMake(sender.view.frame.origin.x - 15, sender.view.frame.origin.y, sender.view.frame.width, sender.view.frame.height)
}, completion:
{(value:Bool) in
})
})
}
現在回到對象本身。 我正在分配一個UITapGestureRecognizer
並將其添加到對象中,但我不確定它是如何工作的,因為回到Objective-C,我們曾經做過:
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(labelTapped)];
其中不需要參數。 但是在Swift中,我必須在labelTapped
之后的括號中加入一個參數,因為它會Missing argument for parameter #1 in call
錯誤中給出Missing argument for parameter #1 in call
的Missing argument for parameter #1 in call
:
let labelTap1=UITapGestureRecognizer(target: self, action: labelTapped())
我該如何解決這個問題? 謝謝!
動作選擇器是一個以冒號結尾的字符串,它告訴它有一個參數(發送者):
let labelTap1=UITapGestureRecognizer(target: self, action: "labelTapped:")
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
let tapRecognizer = UITapGestureRecognizer(target: self, action: "handleSingleTap:")
tapRecognizer.numberOfTapsRequired = 1
self.view.addGestureRecognizer(tapRecognizer)
}
func handleSingleTap(recognizer: UITapGestureRecognizer) {
self.view.endEditing(true)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.