`
jsntghf
  • 浏览: 2532989 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

在UITableViewCell中显示快捷菜单

    博客分类:
  • iOS
阅读更多

如果你想让用户在使用应用时,只要通过一个手指放在一个UITableViewCell上,就能对其进行剪切、拷贝、 粘贴的操作,那么你需要实现UITableViewDelegate协议中的以下三个方法:

 

1、- (BOOL)tableView:(UITableView *)tableView shouldShowMenuForRowAtIndexPath:(NSIndexPath *)indexPath 

如果返回YES则会显示快捷菜单

 

2、- (BOOL)tableView:(UITableView *)tableView canPerformAction:(SEL)action forRowAtIndexPath:(NSIndexPath *)indexPath withSender:(id)sender 

一旦你允许UITableViewCell显示快捷菜单,那么iOS将会多次调用这个方法,并且通过你对选择器的操作来决定是不是要显示快捷菜单。所以如果iOS问你是否想要对用户显示拷贝菜单,这个方法就会在UITableView的委托对象中调用,这个方法的 canPerformAction参数等同于@selector(copy:)

 

3、- (void)tableView:(UITableView *)tableView performAction:(SEL)action forRowAtIndexPath:(NSIndexPath *)indexPath withSender:(id)sender 

在UITableViewCell的快捷菜单中,一旦你允许显示特定动作,并且一旦用户从菜单中选中了这个动作时,这个方法会在UITableView的委托对象中调用。此时,你必须采取任何满足用户需求的行动。例如,如果用户选择的拷贝,你将需要有一个粘贴板用来放那些被选中的UITableView单元格的内容。

 

UITableView会给iOS一个是/否的回答,允许或者不允许它为UITableViewCell显示可用系统菜单选项。当用户把手指放在UITableViewCell上一个确定的时间内,严格来说大约1秒钟,iOS试图在UITableViewCell上显示一个快捷菜单。随后 iOS会询问UITableView,UITableViewCell是菜单触发的来源。如果UITableView给了iOS一个肯定的回答,那么iOS随后会告诉UITableView什么选项适合显示于快捷菜单中,UITableView才能够对任一选项说是或者否。如果有5个适用于实例的菜单选项,UITableView只对其中的2个说是,那么只有2个选项显示出来。在菜单选项显示给用户之后,用户既能点击其中一个项目或者点击快捷菜单的外围来取消点击效果。一旦用户点击了其中一个菜单选项,iOS将发送一条委托消息到UITableView,通知它用户点击的菜单选项。基于所有这些信息,UITableView可以做一个决定,要对这些已经选择的动作做什么。

 

- (BOOL)tableView:(UITableView *)tableView shouldShowMenuForRowAtIndexPath:(NSIndexPath *)indexPath {
    return YES;
}

- (BOOL)tableView:(UITableView *)tableView canPerformAction:(SEL)action forRowAtIndexPath:(NSIndexPath *)indexPath withSender:(id)sender {
    return  YES;
}

- (void)tableView:(UITableView *)tableView performAction:(SEL)action forRowAtIndexPath:(NSIndexPath *)indexPath withSender:(id)sender {
    if (action == @selector(copy:)) {
        [UIPasteboard generalPasteboard].string = [dataArray objectAtIndex:indexPath.row];
    }
    if (action == @selector(cut:)) {
        [UIPasteboard generalPasteboard].string = [dataArray objectAtIndex:indexPath.row];
        [dataArray replaceObjectAtIndex:indexPath.row withObject:@""];
        [tbl reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationNone];
    }
    if (action == @selector(paste:)) {
        NSString *pasteString = [UIPasteboard generalPasteboard].string;
        NSString *tmpString = [NSString stringWithFormat:@"%@ %@", [dataArray objectAtIndex:indexPath.row], pasteString];
        [dataArray replaceObjectAtIndex:indexPath.row withObject:tmpString];
        [tbl reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationNone];
    }
}

 

可以支持的菜单列表如下:

cut:

copy:

select:

selectAll:

paste:

delete:

_promptForReplace:

_showTextStyleOptions:

_define:

_addShortcut:

_accessibilitySpeak:

_accessibilitySpeakLanguageSelection:

_accessibilityPauseSpeaking:

makeTextWritingDirectionRightToLeft:

makeTextWritingDirectionLeftToRight:

分享到:
评论

相关推荐

    自定义UITableViewCell左滑动多菜单功能

    在同一个工作空间里面,采用了 3中实现方式: 1、使用自定义UITableViewCell + UISwipeGestureRecognizer + 代理 实现; 2、使用自定义UITableViewCell + UIPanGestureRecognizer + 代理 实现; 3、使用自定义...

    IOS开发源码-布局控件使用自定义UITableViewCell 导航及底部菜单后台获取功能等ISO代码合集.zip

    IOS开发源码-布局控件使用自定义UITableViewCell 导航及底部菜单后台获取功能等ISO代码合集: ios三级展开列表TQMultistageTableView_10802 ios个性化每个tableMHNibTableViewCell ios分页的滚动视图 IOS可扩展底部...

    UITableView 快捷菜单的使用Demo

    3. **显示菜单**:可以使用UIMenuController来创建和展示菜单。设置菜单项并指定相应的动作。例如,可以添加“粘贴”菜单项,关联一个处理粘贴操作的代理方法。 4. **粘贴功能**:在UITableView中实现粘贴功能,...

    iOS、UITableViewCell、自定义

    在iOS开发中,UITableView是展示数据列表的一种常见控件,而UITableViewCell则是表格中的每一行单元格。为了使应用界面更具个性化和用户体验更佳,开发者往往需要对UITableViewCell进行自定义。本话题将深入探讨如何...

    IOS源码应用Demo-UITableViewCell 视图扩展.zip

    在默认情况下,UITableViewCell提供了textLabel和detailTextLabel来显示简单的文本信息。但为了满足更复杂的需求,我们通常需要对其进行扩展,增加自定义视图和行为。 这个源码Demo可能包含了以下知识点: 1. ...

    IOS UITABLEVIEWCELL不刷新测试代码

    在UITableViewCell中,我们通常通过以下方式设置右detail: ```swift cell.detailTextLabel.text = "新内容" ``` 或者在Objective-C中: ```objc cell.detailTextLabel.text = @"新内容"; ``` 如果单元格的右...

    动态计算UITableViewCell高度详解

    在UITableViewCell中,确保所有子视图的约束已经设置完整,这样才能正确计算出高度。 2. **重写UITableViewDataSource方法**:需要重写`tableView(_:heightForRowAt:)`方法。在这个方法中,我们将返回对应行的...

    UITableViewCell的reuse(修正)

    在iOS开发中,UITableView是展示数据列表的主要控件,而UITableViewCell是其基本单元,用于显示每一行的内容。在处理大量数据时,为了提高性能和节省内存,UITableView利用了`reuse`机制,这就是“UITableViewCell的...

    swift-UITableViewCell动画效果

    在iOS应用开发中,Swift语言提供了丰富的功能来创建引人入胜的用户界面,而`UITableViewCell`是构建表格视图(UITableView)中的基础组件。在本主题“swift-UITableViewCell动画效果”中,我们将深入探讨如何利用...

    优化UITableViewCell滚动性能demo

    3. **减少视图层级**:尽量减少UITableViewCell中的视图数量和层级,因为更多的视图意味着更复杂的布局计算和渲染。使用Auto Layout时,合理设置约束以减少布局计算。 4. **复用池中的清理工作**:在`...

    swift-利用原始UITableViewcell强大的自适应性能改造UITableViewcell

    在Swift编程中,UITableView是应用开发中不可或缺的一部分,它用于展示列表数据,具有高度的可定制性和灵活性。本文将深入探讨如何利用原始UITableViewCell的强大自适应性能来改造我们的UITableViewCell,而不是像...

    UITableViewCell带图片点击

    在iOS开发中,`UITableViewCell` 是用于展示表视图(UITableView)中的数据行。当我们需要在单元格中添加图片并且让这些图片具有交互性时,比如点击后切换图片,这通常涉及到自定义`UITableViewCell`以及处理点击...

    UITableViewCell根据内容自动高度

    接着,我们要确保每个UITableViewCell中的子视图设置了合适的约束。利用Auto Layout,为每个子视图添加上下左右约束,确保内容的变化能引起约束的更新。例如,对于一个包含标签(UILabel)的单元格,我们需要设置...

    ios-UITableViewCell中添加横向滚动视图,用于展示不同图片。利用UICollectionView的优点,从而性能上有很大优化.zip

    https://github.com/amber01/WSHorizontalListView.git ,在UITableViewCell中添加横向滚动视图,用于展示不同图片。利用UICollectionView的优点,从而性能上有很大优化

    可以通过不同的坐标显示菜单,cell也不用单独获取坐标.zip

    然而,标题“可以通过不同的坐标显示菜单,cell也不用单独获取坐标.zip”描述了一个更高效的方法,它提供了一个可以直接在cell上弹出菜单的视图,而无需手动计算cell的坐标。 首先,这个技术的关键在于避免了繁琐的...

    自定义UITableViewCell。实现各种样式的表格输入界面ios源代码设计资料

    `UITableViewCell`是iOS中的一个类,它为`UITableView`提供可重用的单元格,用于显示和交互数据。默认情况下,`UITableView`提供了几种预设的样式,如基本样式(Basic)和值1样式(Value1)等。然而,这些样式可能...

    ios UItableviewCell 中的UIlabel 采用自动布局fConstraints结果出现问题。

    通过以上步骤和注意事项,我们可以更好地处理UITableViewCell中的UILabel自动布局问题,确保在iPad等不同设备上得到理想的显示效果。在实际项目中,不断调试和优化是解决问题的关键。如果在尝试解决这些问题后仍然...

    UITableViewCell自适应高度

    `UITableViewCell` 是`UITableView`中的基本单元,每个单元格可以显示一行数据。在设计用户界面时,为了提供良好的用户体验,我们希望`UITableViewCell`的高度能够根据内容自动调整,这就是所谓的`UITableViewCell`...

    ios-UITableViewCell折叠效果.zip

    在“ios-UITableViewCell折叠效果.zip”压缩包中,可能包含了一个示例项目,包括Xcode工程文件、Swift或Objective-C代码、资源文件等。通过分析和运行这些代码,开发者可以直观地学习到如何实现这样的动态效果,并...

    在菜单中加入图标

    - **在移动应用中**:对于iOS,可以在Interface Builder中为`UIBarButtonItem`或`UITableViewCell`设置图标;Android中,可以在XML布局文件中使用`android:icon`属性。 4. **响应式设计**:考虑不同设备和屏幕尺寸...

Global site tag (gtag.js) - Google Analytics