iOS淘寶列表長(zhǎng)按效果實(shí)現(xiàn)

項(xiàng)目中需要做一個(gè)如下和淘寶相同的長(zhǎng)按的交互:

淘寶效果

首先分析要點(diǎn):

  • 運(yùn)用在TableView或者CollectionView上的cell上
  • 在列表進(jìn)行滑動(dòng)是會(huì)隱藏效果
  • 長(zhǎng)按下一個(gè)會(huì)自動(dòng)隱藏掉上一個(gè)cell的長(zhǎng)按操作

實(shí)現(xiàn)思路

  • 給cell添加長(zhǎng)按手勢(shì)
  • 創(chuàng)建一個(gè)和要求效果相同的視圖,添加到當(dāng)前cell上
  • 添加動(dòng)畫效果

根據(jù)以上思路效果基本完成但是還存在一下問題:

  • 如何在滾動(dòng)時(shí)取消界面上的長(zhǎng)按視圖?
  • 如何在下一個(gè)長(zhǎng)按事件出現(xiàn)時(shí),隱藏上一個(gè)事件?

封裝,自然盡量減少控件的使用復(fù)雜度
問題1:

  在長(zhǎng)按視圖中添加獲取當(dāng)前長(zhǎng)按View的父視圖添加監(jiān)聽事件
[_viewController addObserver:self forKeyPath:@"contentOffset" options:NSKeyValueObservingOptionNew context:nil];

在監(jiān)聽到contentOffset發(fā)生變化時(shí),隱藏當(dāng)前長(zhǎng)按視圖。

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
    if ([keyPath isEqualToString:@"contentOffset"]) {
        [self dismiss];
    }
}

問題2:
解決方法有很多種,如何在使用時(shí)做的操作最少?
通過工廠方法,創(chuàng)建的長(zhǎng)按視圖,在新的視圖創(chuàng)建成功時(shí),將舊的視圖dismiss掉。

+ (instancetype)shareManager {
    static LongPressFactory *shareManager = nil;
    static dispatch_once_t once;
    dispatch_once(&once, ^{
        shareManager = [[self alloc] init];
    });
    return shareManager;
}

- (LongPressView *)createLongPress {
    
    LongPressView *press = [[LongPressView alloc] init];
    
    [self resetFactory];
    
    [self.factoryGoods addObject:press];
    
    return press;
}

- (void)resetFactory {
    for (LongPressView *lpView in self.factoryGoods) {
        [lpView dismiss];
    }
    
    [self.factoryGoods removeAllObjects];
    
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,419評(píng)論 4 61
  • 翻譯自“Collection View Programming Guide for iOS” 0 關(guān)于iOS集合視...
    lakerszhy閱讀 4,076評(píng)論 1 22
  • 從見你的第一面,就喜歡上了。你是我上高中以來,在一次喜歡上的男生。沒想到在大學(xué)相遇了。這一次的相遇,心以隨你而...
    Sophie_e2fa閱讀 224評(píng)論 1 0
  • 〖堅(jiān)持看到底有驚喜!不要被開頭的殺馬特嚇跑了〗 我平時(shí)比較喜歡畫畫?_? 雖然畫的不好……但是!我身殘志堅(jiān)?。ㄊ裁?..
    小獅嘰QAQ閱讀 775評(píng)論 16 10

友情鏈接更多精彩內(nèi)容