亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

touchesEnded中區分觸摸類型

發布時間:2020-04-03 16:25:58 來源:網絡 閱讀:560 作者:aprogram 欄目:開發技術

公司項目中需要為一個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信息

短按:

<UITouch: 0x1703801a0> phase: Ended tap count: 1 window: <UIWindow: 0x156d467c0; frame = (0 0; 414 736); autoresize = W+H; gestureRecognizers = <NSArray: 0x17024b280>; layer = <UIWindowLayer: 0x170233aa0>> view: <UIView: 0x156d83810; frame = (76.6667 216.667; 261 303); layer = <CALayer: 0x170234d40>> 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}

長按:

<UITouch: 0x17018f220> phase: Ended tap count: 0 window: <UIWindow: 0x14e661ee0; frame = (0 0; 414 736); autoresize = W+H; gestureRecognizers = <NSArray: 0x17005eed0>; layer = <UIWindowLayer: 0x17003e700>> view: <UIView: 0x14e5a2cb0; frame = (76.6667 216.667; 261 303); layer = <CALayer: 0x1744329e0>> 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);
    }
}


搞定,打完收工。。。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

长武县| 汉寿县| 汶川县| 桐梓县| 安宁市| 岑溪市| 寿阳县| 介休市| 永顺县| 大庆市| 湘潭县| 邮箱| 庆安县| 当雄县| 托克托县| 陆良县| 于都县| 巴马| 许昌市| 靖边县| 尖扎县| 浪卡子县| 木兰县| 牙克石市| 交口县| 新乐市| 家居| 镇安县| 高要市| 法库县| 岑巩县| 湖北省| 汾阳市| 凌云县| 张家口市| 镶黄旗| 贵港市| 诸暨市| 桑日县| 石景山区| 保靖县|