ios 给 UIView增加手势

169 阅读1分钟
//
//  ViewController.swift
//  疯狂ios
//
//  Created by gy on 2023/1/8.
//

import UIKit

class ViewController: UIViewController {

    var stackView : UIStackView!
    var gv:UIView!
    var label:UILabel!
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let width = self.view.bounds.width
        self.label = UILabel(frame: CGRect.init(x: 10, y: 20, width: width - 20 , height: 50))
        self.label.numberOfLines = 2
        self.label.text = "1"
        self.view.addSubview(self.label)
        
        self.gv = UIView(frame: CGRect.init(x: 10, y: 80, width: width - 20, height: 250))
        self.gv.backgroundColor = UIColor.white
        self.view.addSubview(self.gv)
        self.view.backgroundColor = UIColor.lightGray
        self.gv.layer.borderWidth = 2
        self.gv.layer.cornerRadius = 6
        self.gv.layer.borderColor = UIColor.green.cgColor
        
        self.gv.isUserInteractionEnabled = true
        self.gv.isMultipleTouchEnabled = true

        let gesture = UITapGestureRecognizer(target: self, action: #selector(handleTap(gesture:)))
        //设置该点击手势只处理i次连击事件
        gesture.numberOfTapsRequired = 2
        //设置该点击手势处理几个手指的事件
        gesture.numberOfTouchesRequired = 1
        self.gv.addGestureRecognizer(gesture)
        print("add")
    }
    
    @objc
    func handleTap(gesture:UITapGestureRecognizer){
        let touchNum = gesture.numberOfTouches
        let tapNum = gesture.numberOfTapsRequired
        self.label.text = "用户使用\(touchNum)个手指进行触碰,触碰次数为\(tapNum)"
        print("handleTap")
        
        //调用label的指定方法 with 参数
        self.label.perform(Selector("setText:"), with: "设置", afterDelay: 2)
    }
}

对应的oc代码

//
//  OCUIViewController.m
//  疯狂ios
//
//  Created by gy on 2023/1/14.
//

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

@interface OCUIViewController : UIViewController

@end

@implementation OCUIViewController

{
    UIView* gv;
    UILabel* label;
}

-(void) viewDidLoad {
    float width = self.view.bounds.size.width;
    label = [[UILabel alloc] initWithFrame:CGRectMake(10, 20, width - 20, 50)];
    label.text = @"123";
    [self.view addSubview:label];
    gv = [[UIView alloc] initWithFrame:CGRectMake(10, 80, width - 20, 250)];
    gv.backgroundColor = UIColor.whiteColor;
    gv.layer.borderColor = UIColor.greenColor.CGColor;
    gv.layer.borderWidth = 2;
    gv.layer.cornerRadius = 6;
    [self.view addSubview:gv];
    
    gv.multipleTouchEnabled = true;
    gv.userInteractionEnabled = true;
    
    UITapGestureRecognizer* gesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
    gesture.numberOfTapsRequired = 2;
    gesture.numberOfTouchesRequired = 1;
    [gv addGestureRecognizer:gesture];
}

-(void) handleTap:(UITapGestureRecognizer*) gesture{
    int touchNum = gesture.numberOfTouches;
    int tapNum = gesture.numberOfTapsRequired;
    NSLog(@"touchNum=%d,tapNum=%d",touchNum,tapNum);
    
}

@end