UIButtonselect器不能在嵌套的UIViews中工作

我有这个问题让我发疯。 我花了几十年的时间来弄明白为什么会发生这种情况。

我有一个UIScrollView作为UIView scrollView 。 在这个scrollView中,我有三个不同的在运行时创build的UIView 。 在这三个UIView的一个中,我创build了一个button。这里是我的代码。

  UIButton *buttonLike = [UIButton buttonWithType:UIButtonTypeRoundedRect ] ; buttonLike.frame =CGRectMake(scrollViewWidth +200, 30,36, 16); buttonLike.imageView.image = [UIImage imageNamed:@"like.png"]; [buttonLike addTarget:self action:@selector(buttonLikePressed:) forControlEvents:UIControlEventTouchUpInside] ; 

scrollViewWidth也是一个常量定义和初始化。
而且,我添加这个buttonLike作为UIViews中的一个子视图。 但是,无论我做什么, buttonLikePressed方法都不会调用。 我已经search了这个问题,并提出了这些解决scheme。

Iphone的UIButton不能在嵌套的UIViews工作
iPhone SDK 2:UIButton不能在从nib文件加载的嵌套视图中工作

他们描述了同样的问题。 但是,作为解决scheme,他们使用初始化他们的观点
-(id)initWithFrame:(CGRect)aRect方法。 那么,我已经使用initWithFrame方法初始化了我的UIViews 。 你们有什么想法我可以解决这个问题吗?

谢谢你们

你的button甚至对触摸有反应吗? 按下时是否突出显示?

因为这听起来像是将此button添加到视图边界之外的视图,防止触摸传播到button。 您必须将视图的宽度增加到scrollViewWidth + 200 + 36或更多,或者您需要将button放在视图的边界内。 向我们展示如何创build您添加button的视图。

你应该使用initWithFrame来初始化所有这些视图,并且你应该传入有效的帧rects。 试试这个,你喜欢button将工作!

我认为,UIButton应该首先得到触摸事件,但我有一个类似的问题,button没有被按下。 我最终做的是在父视图的touchesBegan方法中运行一个检查,看它是否触及button的区域。 这对我来说也是非常有帮助的,因为我可以指定一个更大的区域,所以button更容易按下。 然后,我刚刚点燃了button的触摸事件。

另一种更容易的方法是将isUserInteractionEnabled设置为false,以获得button的父视图,当然只有当您不需要它们来响应触摸时。

这些只是想法绕开你的问题,不知道如何实际解决它。