模倣WeChatメッセージがバブルメニューを長押しします

言うまでもありませんが、直接レンダリングに移動します

SJPopMenu.gif

指示

輸入プロジェクト

コードアドレス:github.com/shangjie119…

フォルダをプロジェクトにドラッグするSJPopMenuか、ポッドを使用してプロジェクトをインポートします

pod 'SJPopMenu'

このコンポーネントは、元のプロジェクトとの結合度を減らし、元のプロジェクトコードを変更する必要はほとんどありません。

使用する

  1. 表示:[[SJPopMenuメニュー] showBy:xxxxxx]
  2. SJCustomSelectTextViewのメソッドを実装する必要があります。カスタムtextViewの場合は、SJCustomSelectTextViewの親クラスをプロジェクトで使用されるtextViewに変更するだけです。
  3. コントローラは3つのメソッドを実装し、スクロール時にメニューを正しく表示するために通知を送信する必要があります
- (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];
    }
}
  1. menu.itemActionsを使用してメニューアクションコールバックをクリックします

WeChatの効果の比較

1.長押ししてすべてのテキストを自動的に選択します✅

2.追加するテキストを選択してすべての機能を選択✅

3.現在、テキストの選択された部分はコピーと転送をサポートしています。テキストの選択された部分を使用する必要があります✅

4.選択したテキストをランダムにドラッグして、メニューの位置を変更します(手を離すまでメニューを表示できないようで、メニューの位置がリアルタイムで変更されます)✅❌

5.現在のセルをドラッグしてスライドさせてメニューを非表示にし、スライドを停止してメニューを表示します(スライドに変更してメニューを非表示にします)✅

6. WeChatがメニューを表示する場合、メッセージを受信した時点では新しいメッセージは表示されず、メニューが消えると新しいメッセージが表示されます(新しいメッセージを受信するように変更し、スワイプしてメニューをキャンセルします。AsチャットページでWeChatを押し続けている限り、新しいメッセージがすぐに更新されることはありません。これには高度な結合が必要だと感じたので、行いませんでした)✅

7.表示メニューを長押しし、次にプロセスメニューを長押ししてキャンセルします。指を離してWeChatの一部を選択します(指を離すように変更するか、すべてを選択します)✅

8.メニューを表示します。他の領域のtextViewがまだ選択されている場合がありますか?これはバグです!たまに人のことを心配する…❌

image.png

赤い部分をクリックすると、メニューが消えることはなく、現時点では良い方法はありません。

交換へようこそ

上記の問題の解決策がある場合は、ご連絡ください。githubから発行するか[email protected] メールを送信してください。

他に使用上の問題がある場合は、相互に通信することもできます。

最後に、ダウンロードリンクを配置します

あなたがそれを好きなら、小さな⭐️⭐️を与えてください!

おすすめ

転載: juejin.im/post/7117074340973117477