UIMenucontroller 与 uitableviewcell 上的 uitextview
Posted
技术标签:
【中文标题】UIMenucontroller 与 uitableviewcell 上的 uitextview【英文标题】:UIMenucontroller with uitextview on uitableviewcell 【发布时间】:2014-07-18 06:56:25 【问题描述】:我的自定义 UITableViewCell 中有一个 UITextView。我基本上使用 UITextView 来提供对单元格的数据检测。我为不同的单元格设置了自己的自定义 UIMenuitems。
|-------------------------------|
| |
| |------------------| |
| | | |
| | UITextView| |
| |__________________| |
| |
| UITableViewCell|
|_______________________________|
我面临的问题是,当我点击 UITextView 中的区域时,我没有得到任何菜单控制器,预期的行为是,它应该调用为该特定 UITebleViewCell 定义的相同菜单控制器。
如果我用 UILabel 替换 UITextView,我得到了正确的菜单控制器,但我失去了数据检测能力。
请指导我正确的方向,我错过了什么或我做错了什么?
【问题讨论】:
你说的数据检测是什么意思? 我想检测电话号码、链接、地址、事件,所以我使用 [_textView setDataDetectorTypes:UIDataDetectorTypeAll]; 【参考方案1】:您可以使用 UITapGestureRecognizer 来检测文本视图上的点击。
确保 userInteractionEnabled 对于您的 textView 为 TRUE为您的文本视图添加手势识别器myTextView.userInteractionEnabled = TRUE;
点击显示菜单控制器UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(myTextViewTapped:)]; [myTextView addGestureRecognizer:tapGestureRecognizer];
如果您的菜单控制器依赖于单个单元格,那么您可以使用行号作为 textView 的标记并显示相关的菜单控制器- (void)myTextViewTapped:(id)sender NSLog(@"my text view is tapped"); // display menu now!
// in your tableview cellForRowAtIndexPath method myTextView.tag = indexPath.row; // in your selector UITextView *myTextView = (UITextView *)sender; int rowNumber = myTextView.tag;
【讨论】:
以上是关于UIMenucontroller 与 uitableviewcell 上的 uitextview的主要内容,如果未能解决你的问题,请参考以下文章