各位网友,有晴酒大人的窃玉生香txt全集下载(txt版本)吗,有的话可以在百度云给我吗?

13862人阅读
Ios tableview(38)
项目中需要这个功能,网上找了下资料,有的说得不是很清楚,走了很多弯路才实现了,下面是实现步骤:
1.给cell添加UILongPressGestureRecognizer和相应处理事件
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath
*)indexPath
& &..............
& &UILongPressGestureRecognizer&* longPressGesture = & & & &&[[UILongPressGestureRecognizer&alloc]initWithTarget:selfaction:@selector(cellLongPress:)];
& &[cell&addGestureRecognizer:longPressGesture];
2.配置和显示UIMenuController
- (void)cellLongPress:(UIGestureRecognizer *)recognizer{&
& & if (recognizer.state ==
UIGestureRecognizerStateBegan) {
CGPoint location = [recognizer
locationInView:self];
NSIndexPath * indexPath = [self
indexPathForRowAtPoint:location];&
& & & & UIMyTableViewCell *cell = (UIMyTableViewCell *)recognizer.view;
     //这里把cell做为第一响应(cell默认是无法成为responder,需要重写canBecomeFirstResponder方法)
& & & & [cell becomeFirstResponder];
UIMenuItem *itCopy = [[UIMenuItem
alloc] initWithTitle:@&复制&
action:@selector(handleCopyCell:)];
UIMenuItem *itDelete = [[UIMenuItem
alloc] initWithTitle:@&删除&
action:@selector(handleDeleteCell:)];& & & &&
& & & & UIMenuController *menu = [UIMenuController
sharedMenuController];
[menu&setMenuItems:[NSArray&arrayWithObjects:itCopy,
itDelete,&&nil]];
& & & & [menu
setTargetRect:cell.frame&inView:self];
& & & & [menu setMenuVisible:YES
animated: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
经过这几步,就可以成功显示了,又在网上看到一篇讲这个的外文,分享一下:
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1455844次
积分:12932
积分:12932
排名:第823名
原创:147篇
转载:160篇
评论:111条
(4)(1)(6)(4)(1)(5)(7)(1)(1)(1)(3)(2)(2)(5)(11)(2)(1)(1)(1)(3)(6)(2)(3)(7)(4)(5)(4)(11)(2)(5)(6)(2)(23)(13)(21)(23)(60)(31)(9)(7)(3)长按UITableViewCell弹出UIMenuController - 推酷
长按UITableViewCell弹出UIMenuController
在项目中想要添加一个长按Cell弹出UIMenuController的功能,当我在tableview中添加时是可以弹出来的,然而当在自定义cell.m文件中添加UILongPressGestureRecognizer时,可以触发事件,但是MenuController死活不出来,捣鼓了半天无果,只好google搜索,最后发现忘记实现下面的第三个方法。下面把解决方案记录一下。
要实现长按弹出菜单栏需要做到以下三点:
1.在view(cell)或者viewController中调用-becomeFirstResponder方法;
2.你的view获得或者view controller需要实现 -canBecomeFirstResponder 方法,返回YES;
3.你的view获得或者view controller需要实现-canPerformAction:action withSender:sender 方法来隐藏或者现实响应的item;
cell中关键代码展示:
1.添加longpress事件
[self addGestureRecognizer: [[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(longTap:)]];
2.处理长按事件
-(void)longTap:(UILongPressGestureRecognizer *)longRecognizer
if (longRecognizer.state==UIGestureRecognizerStateBegan) {
[self becomeFirstResponder];
UIMenuController *menu=[UIMenuController sharedMenuController];
UIMenuItem *copyItem = [[UIMenuItem alloc] initWithTitle:@&复制& action:@selector(copyItemClicked:)];
UIMenuItem *resendItem = [[UIMenuItem alloc] initWithTitle:@&转发& action:@selector(resendItemClicked:)];
[menu setMenuItems:[NSArray arrayWithObjects:copyItem,resendItem,nil]];
[menu setTargetRect:self.bounds inView:self];
[menu setMenuVisible:YES animated:YES];
3.实现默认方法
#pragma mark 处理action事件
-(BOOL)canPerformAction:(SEL)action withSender:(id)sender{
if(action ==@selector(copyItemClicked:)){
return YES;
}else if (action==@selector(resendItemClicked:)){
return YES;
return [super canPerformAction:action withSender:sender];
#pragma mark
实现成为第一响应者方法
-(BOOL)canBecomeFirstResponder{
return YES;
4.处理item点击事件
#pragma mark method
-(void)resendItemClicked:(id)sender{
NSLog(@&转发&);
//通知代理
-(void)copyItemClicked:(id)sender{
NSLog(@&复制&);
// 通知代理
喜欢我们的内容,关注官方微信公众账号:乐Coding。
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致ios开发之实现长按UITableViewCell弹出UIMenuController
项目中需要这个功能,网上找了下资料,有的说得不是很清楚,走了很多弯路才实现了,下面是实现步骤:1.给cell添加UILongPressGestureRecognizer和相应处理事件- (UITableViewCell&*)tableView:(UITableView&*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath{ & && &..............& &UILongPressGestureRecognizer&* longPressGesture = & & & &&[[UILongPressGestureRecognizer&alloc]initWithTarget:selfaction:@selector(cellLongPress:)];& &[cell&addGestureRecognizer:longPressGesture];& &return&}2.配置和显示UIMenuController- (void)cellLongPress:(UIGestureRecognizer&*)recognizer{& && &&if&(recognizer.state&==&UIGestureRecognizerStateBegan) {& & & &&CGPoint&location = [recognizer&locationInView:self];& & & &&NSIndexPath&* indexPath = [self&indexPathForRowAtPoint:location];&& & & &&UIMyTableViewCell&*cell = (UIMyTableViewCell&*)recognizer.view;     //这里把cell做为第一响应(cell默认是无法成为responder,需要重写canBecomeFirstResponder方法)& & & & [cell&becomeFirstResponder];&& & & && & & &&UIMenuItem&*itCopy = [[UIMenuItem&alloc]&initWithTitle:@"复制"action:@selector(handleCopyCell:)];& & & &&UIMenuItem&*itDelete = [[UIMenuItem&alloc]&initWithTitle:@"删除"action:@selector(handleDeleteCell:)];& & & &&& & & &&UIMenuController&*menu = [UIMenuController&sharedMenuController];[menu&setMenuItems:[NSArray&arrayWithObjects:itCopy, itDelete,&&nil]];& & & & [menu&setTargetRect:cell.frame&inView:self];& & & & [menu&setMenuVisible:YES&animated: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;}经过这几步,就可以成功显示了,又在网上看到一篇讲这个的外文,分享一下:
TA的最新馆藏[转]&[转]&[转]&[转]&}

我要回帖

更多关于 窃玉生香张小铭和林媚 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信