2009-03-15 5 views
6

現在、タッチイベントはタッチが発生したUIViewを表示します。しかし、円のような非長方形の形の接触を検出する必要がある場合はどうなりますか?そんなことをどうやってやるの?特定のエリアのタッチを検出するにはどうすればいいですか

基本的に私はユーザーが目に見えない円形の領域のどこかに触れる場合にのみ何かしたいと思っています。

お手数ですが、TIA!

答えて

7

あなたはそうそうです。 'locationInView'は、指定されたビューに対するタッチの座標を返します。したがって、ビューの左上隅のタッチは、そのビューが画面上にあるかどうかにかかわらず(0,0)を返します。あなたは、これは球半径未満であったかどうかをチェックし、球の中心にタッチポイントからの距離を計算するだろう球に対してテストするには

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    UITouch *touch = [touches anyObject]; 

    // gets the coordinats of the touch with respect to the specified view. 
    CGPoint touchPoint = [touch locationInView:self]; 

    // test the coordinates however you wish, 
    ... 
} 

+0

ありがとうアンドリュー! いくつかの非標準形状を理解するためのヒントはありますか?私はそれがCGContextで図形を描くようなものになると思っています。または何 ? – dizy

+0

CGContextを描画に使用しますが、 "IsInside"の計算では単に計算を使用するだけです。あなたがポリゴンとして形を表現することができれば、それはかなり簡単です。このリンクは役に立ちます: http://local.wasp.uwa.edu.au/~pbourke/geometry/insidepoly/ –

関連する問題