我创建了一个UIButton
,并将其放在我UIImageView
上UIScrollView
的顶部。我将按钮添加到图像中:
backgroundImage.frame = CGRectMake(0, 0, backgroundImage.frame.size.width, mainTextView.frame.origin.y + mainTextView.frame.size.height + bottomMargin + attachBlockHeight);
[self insertSubview:backgroundImage atIndex:0];
UIButton *tmpButton = [[UIButton alloc] initWithFrame:CGRectMake(0, imgGreyLine.frame.origin.y + imgGreyLine.frame.size.height, backgroundImage.frame.size.width, attachBlockHeight)];
[tmpButton addTarget:self action:@selector(btnAttachClicked) forControlEvents:(UIControlEventTouchUpInside)];
//tmpButton.backgroundColor = [UIColor redColor];
[backgroundImage addSubview:tmpButton];
按钮在iOS6
及以上的按键效果非常好 - 它就在那里,接收触摸事件并完成它必须做的事情。
然而,在iOS5
我遇到了一个非常奇怪的行为 - 按钮的frame
保持完全相同,按钮显然出现在view
上,但它当我向左或向右滑动时,只有才会收到触摸事件。此外,按钮顶部没有其他UIViews
靠近!
它可能是什么原因?我完全不知道在这里发现了这个错误。
编辑:事实证明滑动UIButton
也适用于iOS6
,但事实是触摸事件也已注册。
答案 0 :(得分:1)
您无法将UI按钮添加为UIImageview的子视图。将其添加到滚动视图或UIimageview的超级视图
答案 1 :(得分:1)
我认为做你想做的事的正确方法是使用带有imageview和按钮的UIView作为兄弟姐妹/孩子。确保在imageview上禁用用户交互,你应该很好。
答案 2 :(得分:1)
您需要在UIImageView父级
上启用用户交互例如:
UIImageView *backgroundImage = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
[backgroundImage setBackgroundColor:[UIColor yellowColor]];
[backgroundImage setUserInteractionEnabled:YES];
[self.view addSubview:backgroundImage];
UIButton *tmpButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0,50,50)];
[tmpButton addTarget:self action:@selector(btnAttachClicked) forControlEvents:(UIControlEventTouchUpInside)];
tmpButton.backgroundColor = [UIColor redColor];
[backgroundImage addSubview:tmpButton];