touchesEnded中区分触摸类型-创新互联

公司项目中需要为一个view添加手势,短按则消失,长按就保存到相册,为了在

为洛隆等地区用户提供了全套网页设计制作服务,及洛隆网站建设行业解决方案。主营业务为成都做网站、成都网站制作、洛隆网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

touchesEnded中区分长按和短按开始了google和百度,百度中有人说可以通过以下方式来实现:

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *aTouch = [touches anyObject];
    for(int i = 0; i < [aTouch.gestureRecognizers count] ;i ++){
        UIGestureRecognizer *gesture = [aTouch.gestureRecognizers objectAtIndex:i];
        if([gesture isKindOfClass:[UILongPressGestureRecognizer class]]){
            //do what you want to do...
        }
    }
}

经过验证发现aTouch.gestureRecognizers.count为0,根本无法判断是否长按,万般无奈下只好为view添加了UILongPressGestureRecognizer和UITapGestureRecognizer手势,功能倒是实现,可心里还是不舒服,觉得ios不应该犯如此低级错误,居然在touchesEnded里无法区分长按短按,心塞啊~

好吧,为了消除我心中的郁闷,继续研究,打印长按和短按的touch信息

短按:

 phase: Ended tap count: 1 window: ; layer = > view: > location in window: {198.66667175292969, 332} previous location in window: {197, 332.66665649414062} location in view: {122.000005086263, 115.33333333333337} previous location in view: {120.33333333333331, 115.999989827474}

长按:

 phase: Ended tap count: 0 window: ; layer = > view: > location in window: {184.66667175292969, 454.66665649414062} previous location in window: {188.33332824707031, 455.33334350585938} location in view: {108.000005086263, 237.999989827474} previous location in view: {111.66666158040363, 238.66667683919275}

突然发现tap count是不同的,再查苹果的文档,果然如此,于是就有了以下轻松愉快的代码:

-(void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *aTouch = [touches anyObject];
    NSInteger tapCount = aTouch.tapCount;
    if (1 == tapCount) { //短按
        [self removeFromSuperview];
    }
    else if (0 == tapCount) { //长按
        UIImage *p_w_picpath = [self captureView];
        UIImageWriteToSavedPhotosAlbum(p_w_picpath, self, @selector(p_w_picpath:didFinishSavingWithError:contextInfo:), nil);
    }
}

搞定,打完收工。。。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享标题:touchesEnded中区分触摸类型-创新互联
文章转载:http://myzitong.com/article/coiegj.html