我在我的手机中添加了UITextView
。如果用户点击了UITextView
然后didSelectRowAtIndexPath:
未被调用的单元格,除非他们点击UITextView
未覆盖的区域。是否有工作或我做错了什么?
UITextView *txtview = [[UITextView alloc] initWithFrame:CGRectMake(75, 1, 250, 34)];//init and create the UIWebView
txtview.autoresizesSubviews = NO;
//txtview.autoresizingMask=(UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth);
[txtview setBackgroundColor:[UIColor grayColor]];
[txtview setFont:[UIFont fontWithName:@"Helvetica" size:15]];
txtview.textColor = [UIColor blackColor];
txtview.scrollEnabled = NO;
[txtview setOpaque:NO];
//[txtview setDelegate:self];
txtview.editable = NO;
txtview.text = aBlogRss.title;
[txtview setContentInset:UIEdgeInsetsMake(-11,-8,0,0)];
//[txtview loadHTMLString:htmlString baseURL:nil];
[cell addSubview:txtview];
[txtview release];
非常感谢, -code
答案 0 :(得分:14)
我认为解决方案实际上是
txtView.userInteractionEnabled = NO;
这会将触摸传递给父视图..或者在本例中为UITableViewCell
。如果你在多个地方这样做,那么继承UITAbleViewCell
。
或者,您可以将您的类设为UITextViewDelegate,将您的txtView.delegate设置为self,并实现
- (BOOL)textViewShouldBeginEditing:(UITextView *)textView
,
然后选择正确的UITableViewCell
到self.tableview
..但这不过是黑客攻击。
答案 1 :(得分:0)
您应该在UITextView
中创建viewDidLoad:
,并且只在[cell addSubview:txtview];
中保留cellForRowAtIndexPath:
。
或者,您可以使用:[cell setAccessoryView: txtView];
另一件事,你是如何创建你的细胞的?
答案 2 :(得分:0)
细胞使用一次或可能无限次使用?如果一次,那么你可以使用
- (void)selectRowAtIndexPath:(NSIndexPath *)indexPath animated:(BOOL)animated scrollPosition:(UITableViewScrollPosition)scrollPosition
并手动插入indexPath,因为你知道它在哪里。
如果要重复使用单元格,请尝试使用行设置文本字段的“tag”属性,然后当UITextView检测到触摸时,使用其委托方法之一调用上面的UITableView方法,提供从UITextView标记派生的NSIndexPath。
答案 3 :(得分:0)
向单元格添加UITapGestureRecognizer。
写下如下手势处理代码。
- (IBAction)handleTap:(UITapGestureRecognizer *)sender
{
[self.tableView selectRowAtIndexPath:
[self.tableView indexPathForCell:(UITableViewCell *)sender.view]
animated:NO
scrollPosition:UITableViewScrollPositionNone];
}
连接它们。
您将获得可选择的UITextView和可选择的UITextViewCell。
答案 4 :(得分:-1)
是的,有意义的是没有选择该行,因为它上面有textView
。以下是几种解决方法。
您可以制作textView
框架,以便为选择行提供空间。
您可以将每个textView(对于每一行)设置为属性,并找出选择了哪个textView
。基于此,您可以调用textViewDidBeginEditing
方法并以编程方式使该行可选。
[self.tableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionNone];
注意:您必须在逻辑上将每个textView
与其对应的cellIndexPath
相关联。
答案 5 :(得分:-2)
尝试
txtView.userInteractionEnabled = YES;
应该这样做。