ios手势怎么实现同时可以单击和双击

iOS 码拜 4年前 (2016-03-30) 333次浏览
在学习手势识别的点击手势时 ,遇到了下列两个问题,请高手帮忙解决
1、同时写单击和双击,运行时只能调用单击手势效果,而没有双击效果?(假如不合写单击,就可以实现)
2、手势动作处理函数的无参数可执行,而将参数改为(sender:UITapGestureRecognizer)则会出错
具体代码如下:

    @IBOutlet weak var myimage: UIImageView!
    override func viewDidLoad() {
        super.viewDidLoad()
        
        ///创建点击手势
        //1.创建点击手势[扩展:target 一般是控制器对象]
        var tap = UITapGestureRecognizer(target: self, action: "doubleTap")
        //2.设置点击次数
        tap.numberOfTapsRequired = 2
        //点击手指个数
        tap.numberOfTouchesRequired = 1
        
        //3.将手势添加到视图上
        
        self.myimage.addGestureRecognizer(tap)
        
        //合写为一个语句可以实现单指单击【原因是点击次数和手指默认值为1,若要双击则要分开写】(此时确无法实现双击效果,但是分开写却可以)
        self.myimage.addGestureRecognizer(UITapGestureRecognizer(target: self, action: "singleTap"))
        
        
    }
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    //单击交互事件
     func singleTap()->Int{//??假如加上参数(sender:UITapGestureRecognizer)会出错:unrecognized selector sent to instance 0x7f926355b450
       
        //创建提示框控制器变量
        var alertCon = UIAlertController(title: "单击屏幕", message: nil, preferredStyle: UIAlertControllerStyle.Alert)
        //创建提示框事件
        var alerAction = UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil)
    
        alertCon.addAction(alerAction)
        //设置当前视图器为提示框控制器
        self.presentViewController(alertCon, animated: true, completion: nil)
       
        return 1
    }
    //双击交互事件
    //sender: UITapGestureRecognizer
    func doubleTap(){
       
        //创建提示框控制器变量
        var alertCon = UIAlertController(title: "双击屏幕", message: nil, preferredStyle: UIAlertControllerStyle.Alert)
        //创建提示框事件
        var alerAction = UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil)
        
        alertCon.addAction(alerAction)
        //设置当前视图器为提示框控制器
        self.presentViewController(alertCon, animated: true, completion: nil)
        
    }
解决方案

5

– (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch;
实现这个协议方法
通过判断touch.tapCount可以判断是单击还是双击

20

第一个问题:

self.myimage.addGestureRecognizer(UITapGestureRecognizer(target: self, action: "singleTap"))

这里指定的singleTap方法是无参数的,所以你真正添加的singleTap方法带参数,它肯定找不到了
第二个问题:
单击和双击确实有你说的问题,所以解决思路是延时判断,是单击还是双击;

5

需要本人定义判断是单击还是双击吧,如延时超过多久

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明ios手势怎么实现同时可以单击和双击
喜欢 (0)
[1034331897@qq.com]
分享 (0)