How to call gesture tap on UIView programmatically in swift

后端 未结 23 1772
情歌与酒
情歌与酒 2020-11-28 18:50

I have a UIView and and I have added tap gesture to it:

let tap = UITapGestureRecognizer(target: self, action: Selector(\"handleTap:\"))
tap.delegate = self         


        
23条回答
  •  谎友^
    谎友^ (楼主)
    2020-11-28 19:26

    Try the following swift code (tested in Xcode 6.3.1):

        import UIKit
    
        class KEUITapGesture150427 : UIViewController {
          var _myTap: UITapGestureRecognizer?
          var _myView: UIView?
    
          override func viewDidLoad() {
            super.viewDidLoad()
            view.backgroundColor = UIColor.whiteColor();
    
            _myTap = UITapGestureRecognizer(target: self
    , action: Selector("_myHandleTap:"))
            _myTap!.numberOfTapsRequired = 1
    
            _myView = UIView(frame: CGRectMake(100, 200, 100, 100))
            _myView!.backgroundColor=UIColor.blueColor()
            _myView!.layer.cornerRadius = 20
            _myView!.layer.borderWidth = 1
            _myView!.addGestureRecognizer(_myTap!)
            view.addSubview(_myView!)
          }
    
          func _myHandleTap(sender: UITapGestureRecognizer) {
            if sender.state == .Ended {
              println("_myHandleTap(sender.state == .Ended)")
              sender.view!.backgroundColor
              = UIColor(red: CGFloat(drand48()), green: CGFloat(drand48()), blue: CGFloat(drand48()), alpha: 1.0);
            }
          }
        }
    

    Note that your target could be any subclass of UIResponder, see (tested in Xcode 6.3.1):

        import UIKit
    
        class MyTapTarget  : UIResponder {
          func _myHandleTap2(sender: UITapGestureRecognizer) {
            if sender.state == .Ended {
              println("_myHandleTap2(sender.state == .Ended)")
              sender.view!.backgroundColor
                = UIColor(red: CGFloat(drand48()), green: CGFloat(drand48()), blue: CGFloat(drand48()), alpha: 1.0);
            }
          }
        }
    
        class KEUITapGesture150427b : UIViewController {
          var _myTap: UITapGestureRecognizer?
          var _myView: UIView?
          var _myTapTarget: MyTapTarget?
    
          override func viewDidLoad() {
            super.viewDidLoad()
            view.backgroundColor = UIColor.whiteColor();
    
            _myTapTarget = MyTapTarget()
            _myTap = UITapGestureRecognizer(target: _myTapTarget!
    , action: Selector("_myHandleTap2:"))
            _myTap!.numberOfTapsRequired = 1
    
            _myView = UIView(frame: CGRectMake(100, 200, 100, 100))
            _myView!.backgroundColor=UIColor.blueColor()
            _myView!.layer.cornerRadius = 20
            _myView!.layer.borderWidth = 1
            _myView!.addGestureRecognizer(_myTap!)
            view.addSubview(_myView!)
          }
        }
    

提交回复
热议问题