IOS開發仿微信消息長按氣泡菜單實現效果

正文

話不多說,直接上效果圖

使用方法

導入項目

代碼地址:github.com/shangjie119…

SJPopMenu文件夾拖入到工程或者使用pod導入工程

pod 'SJPopMenu'

這個組件降低與原工程的耦合度,幾乎不需要改動原工程代碼。

使用

  • 顯示: [[SJPopMenu menu] showBy:xxxxxx]
  • 需實現 SJCustomSelectTextView 裡面方法,如果是自定義textView,隻需將 SJCustomSelectTextView 的父類改為項目使用的textView即可
  • controller中需實現3個方法並且發送通知,使滾動時正確顯示menu
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
    [[NSNotificationCenter defaultCenter] postNotificationName:@"SJChangePopMenuIfNeeded" object:nil];
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
    [[NSNotificationCenter defaultCenter] postNotificationName:@"SJShowPopMenuIfNeeded" object:nil];
}
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
    if (!decelerate) {
        [[NSNotificationCenter defaultCenter] postNotificationName:@"SJShowPopMenuIfNeeded" object:nil];
    }
}
  • 點擊menu action回調使用 menu.itemActions

對比微信實現效果

1、長按自動選擇所有文本   ✅

2、選中部分文字增加全選功能 ✅

3、選中部分文字目前支持 復制  轉發  都要用選中部分文本 ✅

4、亂拖選中文本  menu位置要變化(手松開才顯示menu好像做不到,改成menu位置實時變化)✅ ❌

5、拖動當前cell滑動隱藏menu,停止滑動顯示menu  (改成滑動就隱藏menu)✅

6、微信顯示menu時,再收到消息暫時不顯示新消息,menu消失時新消息才出來(改成接收新消息滑動,取消menu。微信隻要按住聊天頁面,新消息都不會馬上刷新出來,感覺這個需要耦合度較高,所以未做)✅

7、長按顯示菜單 再長按 過程 菜單取消   手指松開 微信選中一部分 (改成手指松開,還是全選) ✅

8、顯示菜單  有時點其他區域 textView還是全選中狀態 ??? 這是個bug!! 偶現  愁人ing…… ❌

點擊紅色區域,menu不會消失,目前沒有好方法。

以上就是IOS開發仿微信消息長按氣泡菜單實現效果的詳細內容,更多關於OS 消息長按氣泡菜單的資料請關註WalkonNet其它相關文章!

推薦閱讀: