0

I have a UIView that I am rendering a UIBezierPath in based on touchesBegan and touchesMoved. But I only want to draw in a certain area within the UIVIew. I would like to set up a CGRect within the UIView where touches are only registered. Any touches outside of this area will not be registered.

理想的には、ユーザーがこの長方形の外側にドラッグした場合、タッチを保持し続けることができますが、ユーザーが領域にドラッグして戻ると、touchesBeganメソッドが呼び出されます。

誰かがこれを手伝うことができますか?ありがとう。

4

2 に答える 2

1

pointInside:withEvent: を使用して、ポイントが領域外にある場合はポイントを受け入れないように指示します。

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event{
    return [self isPointWithinMyBounds:point];
}

- (BOOL) isPointWithinMyBounds:(CGPoint) point{
    //determine if the point is within the rect
    return NO;
}

touchesMoved イベントは複雑なものになります。ビューの外にいる間は、描画を中止するだけです。

しかし、それはあなたの望む効果を達成するはずです.

于 2012-06-22T21:01:38.317 に答える
0

現在のUIViewの上に、目的のタッチ領域に合わせたサイズの非表示のUIViewを配置できます。次に、そのビューにのみジェスチャレコグナイザーを追加します。

于 2012-06-22T20:57:12.667 に答える