给控件添加单击事件--UITapGestureRecognizer
来源:互联网 发布:python网页自动化 编辑:程序博客网 时间:2024/05/22 02:09
在Iphone开发中,像UIimageView是不支持点击的,但往往我们却有很多能在Image上点击的需求,比如一个自定义的TableViewCell中放入三个UIimageView,在这里命名为imageleft,imagemiddle,imggeright,当tableView加载后,单击tableView中某一行中的image,我便进入该图片的详细页面。
当然,现在的最新版支持手势控件,只要拖一个这样的控件到UIImageView上,实现它的委托就可以了。若版本太低不支持这样的控件,你便只好老老实实的亲手写代码了。
#import <UIKit/UIKit.h>@protocol TableGridViewCellDelegate;@interface TableGridViewCell : UITableViewCell {}@property (nonatomic,retain) IBOutlet UIImageView *imageleft;@property (nonatomic,retain) IBOutlet UIImageView *imagemiddle;@property (nonatomic,retain) IBOutlet UIImageView *imageright;@property (nonatomic,assign) id<TableGridViewCellDelegate> delegate;...- (void) configGesture;- (void) handTap:(UITapGestureRecognizer*) gesture;...@end@protocol TableGridViewCellDelegate <NSObject>- (void) tapedImageViewInCell:(UITableViewCell*)cell withIndex:(int)index;@end//m文件#import "TableGridViewCell.h"@implementation TableGridViewCell@synthesize imageleft,imagemiddle,imageright,delegate;- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{ self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; if (self) { // Initialization code } return self;}- (void)setSelected:(BOOL)selected animated:(BOOL)animated{ [super setSelected:selected animated:animated]; // Configure the view for the selected state}-(void) dealloc{ SAFE_RELEASE(imageleft); SAFE_RELEASE(imagemiddle); SAFE_RELEASE(imageright); [super dealloc];}- (void) configGesture{ UITapGestureRecognizer *_left = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handTap:)]; [imageleft addGestureRecognizer:_left]; SAFE_RELEASE(_left); UITapGestureRecognizer *_mid = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handTap:)]; [imagemiddle addGestureRecognizer:_mid]; SAFE_RELEASE(_mid); UITapGestureRecognizer *_right = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handTap:)]; [imageright addGestureRecognizer:_right]; SAFE_RELEASE(_right);}- (void) handTap:(UITapGestureRecognizer*) gesture{ if ([delegate respondsToSelector:@selector(tapedImageViewInCell:withIndex:)]) { UIImageView *v = (UIImageView*)gesture.view; [delegate tapedImageViewInCell:self withIndex:v.tag]; }}#pragma mark -#pragma mark TableGridViewCellDelegate- (void) tapedImageViewInCell:(UITableViewCell*)cell withIndex:(int)index{ int row = [myTable indexPathForCell:cell].row; VODItem *it = (VODItem*)[ipListarry objectAtIndex:row*3+index]; NSString *preview_Url = [[NSString alloc] initWithFormat:@"%@",it.Preview_Url]; IPCellDetailInfo *IPCellDetailInfoController = [[IPCellDetailInfo alloc]init]; IPCellDetailInfoController.ClipDetialsInterfaceUrl=it.ClipDetialsInterfaceUrl; IPCellDetailInfoController.ClipDetialsTitle = it.Primary_Name; IPCellDetailInfoController.btnPlayOrViewTitle = it.Sndlvl_Desc; [self.navigationController pushViewController:IPCellDetailInfoController animated:YES]; //新视图压入到栈中 [IPCellDetailInfoController release]; NSLog(@"row = [%d], col = [%d], Preview_Url = [%@]", row, index,preview_Url); [preview_Url release];}@end
好了 其实主要就是要会使用UITapGestureRecognizer,当然这只是手势的其中一个。下面还有几个如:
- UITapGestureRecognizer
- UIPinchGestureRecognizer
- UIRotationGestureRecognizer
- UISwipeGestureRecognizer
- UIPanGestureRecognizer
- UILongPressGestureRecognizer
从命名上不难了解這些类別所对应代表的手势,分別是 Tap(点一下)、Pinch(二指往內或往外拨动)、Rotation(旋转)、Swipe(滑动,快速移动)、Pan (拖移,慢速移动)以及 LongPress(长按)。
- 给控件添加单击事件--UITapGestureRecognizer
- 给控件添加单击事件--UITapGestureRecognizer
- 给控件添加单击事件--UITapGestureRecognizer
- 给控件添加单击事件--UITapGestureRecognizer
- 给控件添加点击响应事件UITapGestureRecognizer
- 给UIimageView添加UITapGestureRecognizer手势点击事件
- 给SCrollView 添加单击事件
- iOS-85-UILabel等控件添加手势点击事件(UITapGestureRecognizer)
- 给GridView添加行单击事件
- Android给按钮添加单击事件
- 通过单击事件给li添加节点
- 给用户控件添加事件
- 给用户控件添加事件
- 给动态控件添加事件
- 给控件添加复制事件
- 解决触摸事件冲突-UITapGestureRecognizer
- 给RecyclerView通用Adapter添加Item单击事件
- JS实现动态绑定单击事件给节点添加样式
- 第四课 拦截器在Struts2中的缺省应用
- mysql 导入数据
- lighttpd 与libevent 网络模型分析
- 什么是P问题、NP问题和NPC问题
- vfat文件系统磁盘分析
- 给控件添加单击事件--UITapGestureRecognizer
- IOS学习之路六(UITableView滑动删除指定行)
- iframe
- ural 1017. The Staircases
- 常用正则表达式
- 监视JSP中JVM可用内存
- MahApps.Metro中Tooltip变黑框问题的解决
- 用JqueryMobile创建分页控件标签
- 电脑钢琴 - 光良童话