10

我看了很多回复,仍然无法弄清楚。我知道第一行有点奇怪,但它是因为它继承自一个将 headerview 设置为搜索栏的超类

searchBar = (UISearchBar *)self.tableView.tableHeaderView;
[[searchBar.subviews objectAtIndex:0] removeFromSuperview];

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, -100, self.view.frame.size.width, 100)];
label.text = @"AAAA";
[searchBar addSubview:label];

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button addTarget:self
           action:@selector(aMethod)
 forControlEvents:UIControlEventTouchDown];
[button setTitle:@"Show View" forState:UIControlStateNormal];
button.frame = CGRectMake(80.0, -60, 160.0, 40.0);

searchBar.exclusiveTouch = NO;
searchBar.userInteractionEnabled = NO;
label.userInteractionEnabled = NO;
button.userInteractionEnabled = YES;
[searchBar insertSubview:button atIndex:3];
4

2 回答 2

10

父视图上的 userInteractionEnabled 设置为 NO 将级联到所有子视图。因此,您的 UIButton 实例将显示为无响应,因为 searchBar 已禁用。

于 2013-07-02T14:58:02.227 回答
9

这是你的答案:searchBar.userInteractionEnabled = NO; 如果您要向禁用了 userInteraction 的视图添加子视图,则该子视图将不会收到触摸。我对你的代码不太看好,看看是否还有其他错误。

首先看一下框架:

button.frame = CGRectMake(80.0, -60, 160.0, 40.0);

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, -100, self.view.frame.size.width, 100);

按钮根本不可见,标签相同,对象被放置在边界之外,这就是为什么你不能触摸它们的原因。

于 2013-07-02T15:01:46.883 回答