2011-06-09 12 views
0

私は10文字のラベル(大きな文字)を持つビューを持っています。各文字(ラベル)には異なるタグがあります。私が開発している機能は "Trace"です。 ユーザーがビュー上で指を動かすと、どの文字がタッチされたかを検出したい。 私はiphone - ラベルの付いたUIViewは、指を動かすとタッチを検出します

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 

、私が実装したと思う。しかし、私はラベルにタッチを特定し、文字を識別するために方法を知りませんよ。 誰かが私を助けることができますか?

答えて

1

あなたは(ユーザーが上に指を置くビュー)タッチ​​がオンに始まったとの見方を知りたい場合は、タッチ項目のいずれかを読み取ることができるのでようNSSetに返さ:

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    NSInteger viewTag = [[[touches anyObject] view] tag]; 

    //Check your view using the tags you've set... 
} 

しかし、指が画面を横切って移動しても、このviewプロパティは最初にタッチされたビューのみを返し、現在は指の下のビューは返しません。

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

    CGPoint point = [touch locationInView:self.view]; 

    //If all your views are collected as an array 
    for(UIView *view in views) { 
     if (CGRectContainsPoint([view frame], point)) 
     { 
      //Bingo 
     } 
    } 
} 

この上の成功の鍵は、あなたのタッチを取得していることを確認することです。これを行うには、おそらくこのように、現在のタッチの座標を追跡し、それが該当する表示かを決定する必要があります。座標が適切なビューを参照するので、locationInView:CGRectContainsPoint()を、アプリケーションのビュー階層に一致する値と適切に(ビュー、ViewControllerなど)配置してください。

希望すること!

+0

解決に感謝します。 – Satyam

0

簡単なタッチを検出するには、UIGestureRecognizerを使用できます。それらの詳細については、ドキュメントを参照してください。より複雑な操作のためには、実装する必要があります:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 

あなたのアイテムのタグ値を与えることができ触れたアイテムを識別するために:

myView.tag = 4; 

それからちょうどタッチをレポートビューのタグ値をチェックあなたはそれがどれであるかを知っています。

関連する問題