我正试图在TableViewCell中使用带有数据检测器类型的UITextView,这本身就是可点击的。
唯一的问题是,我需要UITextView的链接是可点击的,所以userInteractionEnabled = YES,不幸的是这会阻止任何触摸进入UITableViewCell。
当然UITextView无法编辑,我还将其子类化,拒绝它作为第一响应者,以避免在其中选择文本。
我唯一需要的是检测到如果用户触摸UITextView,检查它是否是链接,是否正在打开链接,否则重定向UITableViewCell上的触摸。
任何想法如何做到这一点?
很像twitter应用程序(我们可以点击行,也可以点击链接......)答案 0 :(得分:2)
我知道这个问题已经被问过了一段时间,但是某些应用程序仍然非常需要使用UIDataDetectors的可点击单元格。
所以这里是UITextView子类,我在UITableView中适应这种特殊行为
-(id) initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
self.delegate = self;
}
return self;
}
- (BOOL)canBecomeFirstResponder {
return NO;
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UIView *obj = self;
do {
obj = obj.superview;
} while (![obj isKindOfClass:[UITableViewCell class]]);
UITableViewCell *cell = (UITableViewCell*)obj;
do {
obj = obj.superview;
} while (![obj isKindOfClass:[UITableView class]]);
UITableView *tableView = (UITableView*)obj;
NSIndexPath *indePath = [tableView indexPathForCell:cell];
[[tableView delegate] tableView:tableView didSelectRowAtIndexPath:indePath];
}
- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange {
return YES;
}
您可以修改它以满足您的需求......
希望它有所帮助。