Ios UIMenucontroller在uitableviewcell上具有uitextview
我的自定义UITableViewCell中有一个UITextView。我使用UITextView基本上是为了在cell上提供数据检测。我为不同的单元格设置了自己的自定义UIMenuitemsIos UIMenucontroller在uitableviewcell上具有uitextview,ios,objective-c,uitableview,uitextview,uimenucontroller,Ios,Objective C,Uitableview,Uitextview,Uimenucontroller,我的自定义UITableViewCell中有一个UITextView。我使用UITextView基本上是为了在cell上提供数据检测。我为不同的单元格设置了自己的自定义UIMenuitems |-------------------------------| | | | |------------------| |
|-------------------------------|
| |
| |------------------| |
| | | |
| | UITextView| |
| |__________________| |
| |
| UITableViewCell|
|_______________________________|
我面临的问题是,当我点击UITextView中的区域时,我没有得到任何菜单控制器,预期的行为是,它应该调用为该UITEBLEVEWCELL定义的同一菜单控制器
如果我用UILabel替换UITextView,我会得到合适的菜单控制器,但我失去了数据检测能力
请指导我正确的方向,我遗漏了什么或我做错了什么?您可以使用UITapgestureRecognitizer检测文本视图上的点击
- 确保您的文本视图的userInteractionEnabled为TRUE
- 为文本视图添加手势识别器
- 点击显示菜单控制器
- 如果菜单控制器依赖于单个单元格,则可以使用行号作为textView的标记,并显示相关的菜单控制器
你所说的数据检测是什么意思?我想检测电话号码、链接、地址、事件,所以我使用[_textViewSetDataDetectorTypes:UIDataDetectorTypeAll];
UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(myTextViewTapped:)];
[myTextView addGestureRecognizer:tapGestureRecognizer];
- (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;