1

正方形の 4x4 グリッドを作成したい (各正方形はスペースで区切られている)。ユーザーがある四角形から別の四角形に指をパンすると、四角形を強調表示し、四角形の間に線を引きます (それらが接続されていることを示すため)。

GridView カスタム UIView と 16 個の子 GridElement カスタム UIView を 4x4 として作成しました。パン ジェスチャを使用して四角と線を選択します。それは正しい進め方ですか?

返信ありがとうございます。だから私はあなたが提案したことを試しました。ここで、UIControl の個々のグリッド スクエア サブクラスを作成し、それを含むビューがそれらのアクションのターゲットになります。私の含まれているビューは、UIView のサブクラスです。含まれているビューは UIControlEventTouchDown イベントを受け取りますが、UIControlEventTouchDragExit または (Enter) を受け取りません。

- (void) sendAction:(SEL)action to:(id)target forEvent:(UIEvent *)event {
    [super sendAction:action to:target forEvent:event]; 
}

- (void) sendActionsForControlEvents:(UIControlEvents)controlEvents {
    [super sendActionsForControlEvents:controlEvents];
}

- (BOOL) beginTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event {
    return YES;
}

- (BOOL) continueTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event {
    return YES;
}

私のContainerViewには

[gridElement addTarget:self action:@selector(elementSelected:)forControlEvents:UIControlEventTouchDragEnter];
4

1 に答える 1

2

これは、指がパンと見なされるのに十分なほど移動した場合にのみ、最初の四角形を選択します。最初のタッチを検出するには、別の認識機能を追加する必要がある場合があります。

もし私がこれをやっていたら、私は別の方法でアプローチするでしょう。個々のグリッド スクエアを UIControl サブクラスにし、それを含むビューをそれらのアクションのターゲットにすることができます。UIControls は、タッチ ダウン インサイド、タッチ ドラッグ入力、タッチ アップ インサイドなどのイベントに既に応答しています。これらのイベントを含むビューに渡し、ユーザーが指を動かしたときに必要に応じて線を強調表示/描画できます。

于 2012-09-16T06:25:36.713 に答える