ios开发之实现长按UITableViewCell弹出UIMenuController
来源:互联网 发布:淘宝上手机解锁可靠吗 编辑:程序博客网 时间:2024/06/04 18:25
项目中需要这个功能,网上找了下资料,有的说得不是很清楚,走了很多弯路才实现了,下面是实现步骤:
1.给cell添加UILongPressGestureRecognizer和相应处理事件
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{..............
UILongPressGestureRecognizer * longPressGesture = [[UILongPressGestureRecognizer alloc]initWithTarget:selfaction:@selector(cellLongPress:)];
[cell addGestureRecognizer:longPressGesture];
return cell;
}
2.配置和显示UIMenuController
- (void)cellLongPress:(UIGestureRecognizer *)recognizer{
if (recognizer.state ==UIGestureRecognizerStateBegan) {
CGPoint location = [recognizerlocationInView:self];
NSIndexPath * indexPath = [selfindexPathForRowAtPoint:location];
UIMyTableViewCell *cell = (UIMyTableViewCell *)recognizer.view;
//这里把cell做为第一响应(cell默认是无法成为responder,需要重写canBecomeFirstResponder方法)
[cell becomeFirstResponder];
UIMenuItem *itCopy = [[UIMenuItemalloc]initWithTitle:@"复制"action:@selector(handleCopyCell:)];
UIMenuItem *itDelete = [[UIMenuItemalloc]initWithTitle:@"删除"action:@selector(handleDeleteCell:)];
UIMenuController *menu = [UIMenuControllersharedMenuController];
[menu setMenuItems:[NSArray arrayWithObjects:itCopy, itDelete, nil]];
[menusetTargetRect:cell.frame inView:self];
[menu setMenuVisible:YESanimated:YES];
[itCopy release];
[itDelete release];
}
}
- (void)handleCopyCell:(id)sender{//复制cell
NSLog(@"handle copy cell");
}
- (void)handleDeleteCell:(id)sender{//删除cell
NSLog(@"handle delete cell");
}
3.在自定义的cell里重写canBecomeFirstResponder方法,返回yes
//为了让菜单显示,目标视图必须在responder链中,很多UIKit视图默认并无法成为一个responder,因此你需要使这些视图重载 canBecomeFirstResponder方法,并返回YES
- (BOOL)canBecomeFirstResponder{
return YES;
}
经过这几步,就可以成功显示了,又在网上看到一篇讲这个的外文,分享一下:
http://www.intridea.com/blog/2010/12/22/developers-notes-for-uimenucontroller
- ios开发之实现长按UITableViewCell弹出UIMenuController
- ios开发之实现长按UITableViewCell弹出UIMenuController
- ios开发之实现长按UITableViewCell弹出UIMenuController
- ios开发之实现长按UITableViewCell弹出UIMenuController
- ios开发之实现长按UITableViewCell弹出UIMenuController
- ios开发之实现长按UITableViewCell弹出UIMenuController
- ios开发之实现长按UITableViewCell弹出UIMenuController, 实现文字拷贝等操作
- 长按UITableViewCell弹出UIMenuController
- 长按UITableViewCell弹出UIMenuController
- 长按UITableViewCell弹出UIMenuController——颜婧
- UITableViewCell长按显示UIMenuController
- iOS webview长按弹出框UIMenuController添加自定义功能
- WKWebView 禁用 长按弹出UIMenuController
- UIMenuController IOS 弹出菜单
- IOS长按UITableViewCell进行移动
- iOS开发之UitableViewCell中UISwitch的使用,代理实现
- iOS开发之UITableviewCell实现两个圆角
- 自定义菜单栏代码示例(UIMenuController)及iOS5新增表格长按弹出菜单栏示例
- springMVC初步
- Spiral Matrix & Spiral Matrix II & Rotate Image
- Android工程目录
- poll机制分析
- 表单中PHP的错误提示:Notice: Undefined index: submit in D:\wamp\www\bbs\add.php on line 4
- ios开发之实现长按UITableViewCell弹出UIMenuController
- 容器视图控制器的创建(WORKING WITH CUSTOM CONTAINER VIEW CONTROLLERS)
- 载入jQuery库的最佳方法
- VMware10 无法联网的一种解决办法
- 《你必须知道的495个C语言问题》笔记--库函数
- 空间分析:区域分析之基于shapfile的栅格数据统计
- 支持向量机(四)-- 核函数
- 黑马程序员笔记——Java流程控制
- redhat上安装oracle11g