2009-05-27 18 views
1

私はユーザビリティテストを行っており、マウスの動き、クリック、ドラッグ、キーボード入力など、すべてのユーザ入力イベントを記録したいと考えています。私はそれをする方法を見つけたり、コードを見つけるのは大したことはありません。何かヒント?私はCoreGraphics EventTapの仕組みを見ましたが、それは低レベルすぎると心配しています。私は実際にユーザーがクリックした特定のUI要素を知りたいと思います。すべてのココアイベントをログに記録しますか?

明確にする編集:

を私はユーザビリティテストをやっているので、私は、ユーザーが使用し、使用していない何インターフェースの部分を追跡します。だから、私は "Button 'foo'がこれらの特定のタイムスタンプで7回クリックされたことを追跡したい、ユーザーがこのリストをスクロールしてそのようなアイテムを選択したことなどを確認したい。

答えて

3

あなたのアプリケーション用にトラッキングする場合は、-[NSApplication sendEvent:]を上書きできます。アプリケーションが受け取ったすべてのイベントを適切なレスポンダに送ります。

+1

私はコメントが消えてしまったようです。再現するには:何かが欠落していない限り、sendEventから取得するものには、どのUI要素がクリックされたかについての詳細は含まれません。私は、ボタン、ビューなどがクリックされたことを知らずに「場所(x、y)がウィンドウ内でクリックされた」ことを知らせるNSEventを取得するようです。 – Dan

0

これはあなたが今考えているものとはまったく異なりますが、まだ手に入れていない場合はSilverbackなどと考えてください。

+0

チップのおかげで;私はScreenFlowを使ってスクリーンレコーディングを行っています。 – Dan

2

swizzlingをたくさん行う必要があると思います。

まずスウィズルを試みてくださいtryToPerform:with:;それがうまくいかない場合は、mouseDown:,mouseUp:、ドラッグイベントメソッドkeyDown:keyUp:、およびthe undocumented gesture methodsのようなメソッドを振る舞わせる必要があります。

後者の解決策の1つは、NSResponderだけでなく、そのサブクラスのいくつかでこれらのメソッドをうわべにする必要があるということです。多くのビュークラスは独自の実装を提供しています。先祖の実装。

+0

うん、tryToPerformでうまくいかない:with::私は何も得られません。私の元の解決策は実際にはmouseDown:swizzleを試すことに関わっていましたが、あなたの言うように、多くの下流レスポンダは親メソッドに戻ることはありません。これは、理想的には、使用中のすべてのUIクラスを把握し、それらをすべて自動的にうねりにするということです。それはおそらく別の質問です。 – Dan

1

インストゥルメントには、ユーザーインターフェイスのイベントを記録する手段があります。あなたの目的を達成するために、これの基礎となるdtrace呼び出しを使用できるようです。

関連する問題