簡體   English   中英

在Swift中獲取UITapGestureRecognizer的發件人

[英]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 callMissing 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM