私はカスタムテーブルビューセルを作成して彼にイメージビューを入れたいと思っています。そして、ユーザーがimageviewをクリックしてviewcontroller上のビューをポップアップすると、画像がどのセルに押し込まれたかを示します。iPhone - カスタムセルからuiimageviewタッチイベントをキャッチする
THX
私はカスタムテーブルビューセルを作成して彼にイメージビューを入れたいと思っています。そして、ユーザーがimageviewをクリックしてviewcontroller上のビューをポップアップすると、画像がどのセルに押し込まれたかを示します。iPhone - カスタムセルからuiimageviewタッチイベントをキャッチする
THX
使用UITapGestureRecognizer
ジェスチャーがUIView
から継承された任意のビューでタッチを検出します。
は、以下のように使用します.....
はmyImageView
ビュー(UIImageView
のタイプ)にタップジェスチャーUITapGestureRecognizer
を追加します。
UITapGestureRecognizer *myTapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(gestureTapEvent:)];
myImageView.userInteractionEnabled = YES;
[myImageView addGestureRecognizer:myTapGesture];
[myTapGesture release];
gestureTapEvent:
タッチイベントを受信する方法を実装します。 UPDATED
-(void)gestureTapEvent:(UITapGestureRecognizer *)gesture
{
}
:
を、あなたはあなたとビューにアクセスすることができUIGestureRecognizer
のview
プロパティを使用してジェスチャーを取り付けました。
@property(nonatomic, readonly) UIView *view;
したがって、gestureTapEvent:メソッドは次のようになります。
-(void)gestureTapEvent:(UITapGestureRecognizer *)gesture
{
UIImageView* myImageView = (UIImageView*)gesture.view ;
}
あなたはそのための複数の可能性がありますなど、touchesBegan:withEvent:
メソッドをオーバーライドするためにあなたのImageViewの上UITapGestureRecognizer
(私は、このソリューションをお勧めします)
例:
UITapGestureRecognizer *gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imageViewClicked:)];
[cell.yourImageView addGestureRecognizer:gestureRecognizer];
[gestureRecognizer release];
[EDIT]
あなたimageViewClicked
メソッドを実装するときに、あなたがGestureRecognizerのview
プロパティを使用してタップImageViewのを得ることができます。 (あなたはtableView:cellForRowAtIndexPath:
方法でそれに影響を与えた場合)
imageView.tag = indexPath.row
をtableView:cellForRowAtIndexPath:
に設定して、そのindexPath行を取得してください)例:
-(void)imageViewClicked:(UITapGestureRecognizer*)gestRecognizer
{
UIImageView* iv = (UIImageView*)gestRecognizer.view;
NSInteger tag = iv.tag; // then do what you want with this
// or get the cell by going up thru the superviews until you find it
UIView* cellView = iv;
while(cellView && ![cellView isKindOfClass:[UITableViewCell class]])
cellView = cellView.superview; // go up until you find a cell
// Then get its indexPath
UITableViewCell* cell = (UITableViewCell*)cellView;
NSIndexPath* indexPath = [self.tableView indexPathForCell:cell];
}
しかし、どの画像ビューがタップ方式でクリックされたのかわかりますか? – yosifz8
indexPath.rowを追跡する必要があります – Maulik
UIGestureRecognizer( 'imageViewClicked:'セレクタのパラメータとして渡される)の 'view'プロパティは、UIImageViewへのアクセスを提供します。次に、imageViewのタグを使用して、objetまたはindexPathに関連付けられているモデル(セルを返すときにタグを設定した場合)を追跡したり、親UITableViewCellを取得してindexPathを問い合わせたりできます。 (私はコードを与えるために私の答えを更新する) – AliSoftware
代わりにカスタムUIButtonを取り、ボタンに同じ画像を割り当て、あなたがそのボタンのtouchupInsideイベントを取得することができますUIImageViewの。 button.tag = indexpath.rowを割り当てるだけで、どのセルのボタンが押されたかを取得できます。
-(IBAction)ButtonPressed:(id)sender{
UIButton *btnSelected = sender;
switch(btnSelected.tag){
case: 0
///Cell 0's Button Pressed.
break;
......
......
}
このヘルプが必要です。その後、newTapMethod(または、これまで何あなたがそれに名前を付ける)を作成し、あなたの.mに
UITapGestureRecognizer *newTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(newTapMethod)];
[_imageButtonName setUserInteractionEnabled:YES];
[_imageButtonName addGestureRecognizer:newTap];
を次の形式を使用UIImageViewにタッチイベントを追加するには
-(void)newTapMethod{
//...
}
に役立ちます願っています。
しかし、どの画像ビューがタップ方式でクリックされたのかわかりますか? – yosifz8
@ yosifz8:更新された答えを確認してください... – Jhaliya