1

Monotouch C# iOS 開発について:

私のアプリの 1 つに、ドラッグ可能なアイコンを含む「ツールボックス」として機能する UIScrollview があります。ユーザーはツールボックスをスクロールして必要なアイテムを決定し、それを画面にドラッグできます。それはうまく機能しますが、ユーザーインターフェイスの部分は改善される可能性があります. 改善方法を提案したいのですが、どのように実装すればよいかわかりません。アイデア?

ここに画像の説明を入力

この画像の上部は UIScrollview ツールボックスです。その中には、ドラッグ可能なアイコンがいくつかあります。

現在のメソッド: UIScrollview には、ドラッグ可能な UIImage が含まれています。scrollView.DelaysContentTouches = true メソッドを使用して、タッチを UIImage に転送しています。したがって、基本的に、ユーザーが UIScrollview の任意の場所をスワイプすると (ドラッグ可能なアイコンをスワイプした場合でも)、すばやくスワイプする限り、スクロールとしてカウントされます。DelaysContentTouches には、約 0.16 秒の遅延が組み込まれています。知らない人のために以下に説明します。

DelaysContentTouches:このプロパティの値が YES の場合、スクロール ビューは、スクロールが目的であるかどうかを判断できるまで、タッチダウン ジェスチャの処理を遅らせます。値が NO の場合、スクロール ビューはすぐに touchesShouldBegin:withEvent:inContentView: を呼び出します。デフォルト値は YES です。

現在の方法の問題点: 現在の方法は機能しますが、ばかげているわけでもなく、非常に直感的でもありません。ある程度は直感的ですが、私の好みではありません。私は自分のソフトウェアでいくつかのプロジェクトのデモを行いましたが、アイコンをツールボックスにドラッグしようとしてつまずく人がいます。彼らは常に「スワイプのような動き」でドラッグしようとし、アイコンをドラッグする代わりにツールボックスをスクロールしてしまいます。ばかげているように聞こえるかもしれませんが、このアプリを初めて使用する人は、ドラッグがどのように機能するかを理解するのに常に約 1 分を費やします。そして、それは良くありません。

新しい提案された方法:私の提案された方法は、「スワイプ」または「ドラッグ」が行われている角度に基づいて、ドラッグとスクロールのユーザーの意図を判断します。Drag me Range と Scroll Me Range であるツールボックスから角度範囲を定義します。ユーザーがアイコンに触れて下にドラッグし始めると、TouchesMoved 関数がドラッグの移動距離を測定します。Touch がおよそ 5 または 10 ピクセルの距離を移動すると、最初のタッチ位置から現在の移動位置までの角度が測定されます。角度が Drag Me Angle Range 内にある場合、アイコンをドラッグします。角度が Scroll Me の範囲内であれば、アイコンをスクロールします。

ここに画像の説明を入力

この画像では、上の赤い領域が「Scroll Me Range」で、下の黄色い領域が「Drag Me Range」です。角度は黄色の斜線で定義されます。

この新しいメソッドの実装: これ をどのように実装しますか? Touch が DragIcon と UIScrollView の両方の TouchesBegan に入ることを許可し、使用しない方のタッチをキャンセルする必要がありますか? 例: ユーザーがすばやくスワイプしてアイコンを下にドラッグしようとしました。UIScrollView と DragIcon の両方が TouchesBegan でタッチを受け取ります。10 ピクセルの距離をドラッグした後、TouchesMoved 関数が角度を測定し、DragMe 範囲内にあるかどうかを判断します。DragMe Range 内にあるため、UIScrollView 内のタッチをキャンセルして移動できなくなります.... できますか? ここでの副作用は、角度の測定を待機している間の最初の 10 ピクセルの移動中に、DragIcon と UIScrollview の両方が移動/スクロールすることです...

これをどのように実装しますか?それとももっといい考えがありますか?

4

0 に答える 0