2

我有这个问题让我发疯。我花了几十年的时间来弄清楚为什么会这样。

. UIScrollView_ _ 在这个滚动视图中,我有三个在运行时创建的不同的 s。在这三个中的一个中,我创建了一个按钮。这是我的代码。UIViewUIViewUIView

        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方法都不会调用。我已经搜索了这个问题并提出了这些解决方案。

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

他们描述了同样的问题。但是,作为一种解决方案,他们使用方法初始化他们的视图
-(id)initWithFrame:(CGRect)aRect。好吧,我已经使用 方法初始化了我的UIViewsinitWithFrame。你们知道我该如何解决这个问题吗?

谢谢你们

4

3 回答 3

7

你的按钮甚至对触摸有反应吗?按下时会突出显示吗?

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

于 2012-08-14T14:17:47.647 回答
0

您应该使用 initWithFrame 初始化所有这些视图,并且应该传入有效的框架矩形。试试这个,你喜欢的按钮会起作用!

于 2012-08-14T13:39:22.033 回答
0

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

另一种更容易的方法是将按钮的父视图的 isUserInteractionEnabled 设置为 false,当然前提是您不需要它们响应触摸。

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

于 2012-08-14T14:01:08.370 回答