10

通常のUITableViewがあり、次のコードを実行しました。

UITableView *tableView = [[UITableView alloc] init];
for(UIGestureRecognizer *gesture in tableView.gestureRecognizers)
 {
   NSString *className = NSStringFromClass([gesture class]);
   NSLog(@"ClassName:%@", className);
 }

出力行の1つは次のとおりです。ClassName:UIGobblerGestureRecognizer

驚いたことに、Googleはこれについて何も持っていません。誰かがそれが何であるかについて何か考えがありますか?

4

5 に答える 5

7

ほとんどの場合、これはAppleが使用する内部クラスです。Appleが特定の用途のために作成したUIGestureRecognizersのカスタムサブクラスに出くわしました。私と同じように、さまざまな理由でカスタムジェスチャレコグナイザーを作成する必要があったと確信しています。これらのクラスのすべてが公開されているわけではありません。

于 2012-04-27T17:39:10.680 に答える
2

http://oleb.net/blog/2013/02/new-undocumented-apis-ios-6-1/をチェックしてください

BJ Homerは、アニメーションの進行中に認識を回避するためにUIGobblerGestureRecognizerが使用されていると考えています。それ以外の場合は、非アクティブです。興味深いTwitterの会話で、FilippoBigarellaとConradKramerは、UIGobblerGestureRecognizerが特定の状況で他のジェスチャ認識機能がタッチを受信しないようにするために、タッチを「ゴブリング」できることを発見しました。それらがどのような状況であるか、私にはわかりません。

于 2013-10-16T19:45:16.273 に答える
2

特定のセルに削除確認ボタンが表示されているときに通常の操作を防ぐために使用され、タッチダウンをトリガーしてそのセルが非編集状態に戻ることを認識していると確信しています。

このメソッドがあり、excludedViewが削除確認ボタンを表示しているセルであると想定しています。これは、通常、この状態のセルと引き続き対話できるためです。

- (id)initWithTarget:(id)arg1 action:(SEL)arg2 excludedView:(id)arg3;

https://github.com/nst/iOS-Runtime-Headers/blob/master/Frameworks/UIKit.framework/UIGobblerGestureRecognizer.h

于 2013-11-07T03:30:19.553 に答える
2

要するに、私が読んだことと私の実験が示したことから、「ゴブラー」は、状態遷移(ユーザーのタッチまたはスワイプによって開始される)時にテーブルビュー(実際にはテーブルセル)をスワイプしてタッチするように見えますが進行中であるため、ユーザーがテーブルに再度触れる前に状態遷移を完了することができます。Appleは他の場合にそれを使うかもしれないが、私がゴブラーを観察したのはテーブルビュー上にある。

長い話ですが、テーブルビューが、Appleのメールアプリやメッセージアプリのように、テーブルセルに「引き出し」を実装しているとします。バックスワイプで引き出しを開き、引き出しのいずれかのボタンを操作すると、すべて問題ありません。ただし、4回目のスワイプでドローを閉じると、ランダムセルでの次のバックスワイプが機能しない場合があります。ただし、バックスワイプを続けている場合は、通常、次のスワイプが再び機能して引き出しが表示されます。簡単に言えば、スワイプを使用してランダムセルの引き出しを開閉すると、引き出しが開かないことがあります。

私は自分のテーブルでこの振る舞いを見て、何か間違ったことをしたと思いました。私は多くのことを試し、最終的にUIGestureRecognizerDelegateもサポートするUITableViewの独自のサブクラスを実装しました。私のサブクラスでは、jessageRecognizerとotherGestureRecognizerのペアを出力するために、デリゲートのshouldBeRequiredToFailByGestureRecognizer関数を実装しました。次に、バックスワイプが認識されたときに、ゴブラーがペアに存在しないことがわかりました。しかし、バックスワイプが機能していないときは、ゴブラーは間違いなく存在します。

Webでの一般的な意見では、gobblerは、1つの遷移がすでに進行しているときに、ユーザーがテーブル上で別の状態遷移を引き起こすのを防ぐために使用されます。ユーザーが実際に何らかのアクションを実行する場合(ドロワーのボタンに触れることによって)、これは問題ありません。ただし、ユーザーが引き出しを閉じるだけの場合は、ゴブラーをキャンセルする必要があります。または、ユーザーがアクションを実行した場合にのみ、ゴブラーを追加する必要があります。気付いた後、私はAppleのアプリについて自分の理論を試してみました。メールアプリがすべてのスワイプに完全に応答して動作することはすでに知っていました。しかし、メッセージアプリは、私のアプリと同じように、引き出しを開くスワイプを繰り返すと断続的に動作します。したがって、Mailの開発者はより注意深く、内部の知識を使用して正しく処理していると思います。私の観察は、iPhone6とiPad2のiOS8.4で行われます。

于 2015-07-27T15:10:10.583 に答える
1

それは間違いなくプライベートAPIの一部である必要があります..

私はそれを避けることを提案します

于 2012-04-27T17:39:19.817 に答える