2012-03-30 12 views
0

このカレンダーは、プログラムで作成された48個のフレームで構成されています... UITapGestureRecognizerを実行すると、フレームのx、y座標が返されます...どのフレームがタップされたかを判断する方法はありますか?どのボタンがタップされたかを確認する方法は?

UPDATE:これは、フレームを作成するためのコードです:

self.frame = frame; 
self.backgroundColor = [UIColor colorWithRed:rd1 green:gr1 blue:bl1 alpha:1.0]; 
[[self layer] setBorderColor:[[UIColor blackColor] CGColor]]; 
[[self layer] setBorderWidth:0.5]; 
[[self layer] setCornerRadius:10]; 
[self setClipsToBounds: YES]; 
+0

詳細情報を入力してください。 48個のボタンを作成してレイアウトするにはどうすればいいですか?たとえば、すべてのボタンを繰り返し、座標がボタンのフレームに属しているかどうかをテストしたり、レイアウトルールが分かっていれば座標からボタンを計算することができます。 – Vladimir

+2

ボタンがある場合は、ジェスチャ認識ツール? – Vladimir

答えて

0

あなたがボタンを持っている場合は、それらを有効にした場合、それらをタップすると、あなたがタップアクションにリンクされているメソッドをトリガーします。

したがって、各ボタンには「タグ」プロパティがあります。

タグプロパティを使用すると、メソッドをトリガしたボタンを知ることができます。

編集:

あなたのボタンはUIButtonクラスに属している場合、あなたがタグプロパティを介して、ボタンのタグを取得することができ、すなわち:

mybutton.tag 

または

[mybutton tag] 
+0

どのようにタグを追加しますか? (元の投稿の更新を参照してください) – SpokaneDude

+0

あなたのコードはUIButtonクラスの意味でUIButtonを作成しません。 http://developer.apple.com/library/ios/#documentation/uikit/reference/UIButton_Class/UIButton/UIButton.html – moxy

+0

あなたが言っていることを理解しています...それでは、変更しましょう。四角形を描いています...どうすればUIButtonの "タグ"のようにそれぞれを識別できますか? – SpokaneDude

1

私は何を理解していればあなたがやっている - 次のルーチンは、使用の可能性があります。タッチ座標を取得し、それを配列内の各矩形に対してテストします。それはCPPointはrectの中にあり、あなたはあなたのインデックス番号を持っており、それに基づいてあなたがする必要があることをすることができます。

どのように矩形の配列を定義するかによって、タッチCGPointを正規化する必要があります。

とにかく - それが助けてくれることを願っています。

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

UITouch *touch = [touches anyObject]; 
CGPoint point = [touch locationInView:self.view]; 

// See if the point touched is within these rectangular bounds 
if (CGRectContainsPoint(self.gridRect, point)) 
{ 
    CGRect rect; 
    int cnt = self.cellRectArray.count; 
    for (int i = 0; i < cnt; i++) { 

     rect = [[self.cellRectArray objectAtIndex:i] cellRect]; 
     rect = CGRectOffset(rect, self.gridOriginX, self.gridOriginY); 
     rect = CGRectInset(rect, 10, 10); 
     if (CGRectContainsPoint(rect, point)) { 
      // do something 
      break; 
     } 
    } 
} 

}

+0

私はこれを行うだろうと思う...私はUIButtonで作業することを管理する方法を参照してください各矩形の座標をキャプチャし、日付などの他のデータと共に配列に格納することから始めなければならないと思います。私はそれを試してみましょう...あなたに応答してください! – SpokaneDude

+0

唯一の難しいことは、同じ座標空間で@作業していることです:タッチ座標とUIViewの座標。これは 'CGRectOffset'の目的です - ビューのx/yを基準にしてそれらをシフトすることです。また、 "cellRect"は、CGArectをNSArrayに格納することができないため、NSArrayにCGRectを格納するためのカスタムNSObjectベースのクラスです。 - 乾杯! –

0

あなたは、なぜそれが接続されて表示され聞かないUITapGestureRecognizerを使用している場合は?

- (void)cellTapped:(UITapGestureRecognizer *)tapGestureRecognizer; 
{ 
    NSLog(@"%@", tapGestureRecognizer.view); 
} 
関連する問題