【发布时间】:2012-11-12 21:10:23
【问题描述】:
我在自定义 UIView 中放置了一个 UIButton 并且该按钮没有接收任何触摸事件(它没有进入突出显示状态,所以我的问题是不是无法连接向上触摸内部处理程序)。我已经尝试将它放入 Interface Builder 中的 XIB 中,还尝试以编程方式将 UIButton 分别添加到 UIView 中,但都没有成功。我所有的视图都在 UIScrollView 内,所以我首先虽然 UIScrollView 可能会阻止它们,所以我还以编程方式添加了一个按钮,就像我将自定义视图添加到 UIScrollView 中一样,并且按钮工作,消除了 UIScrollView 的可能性成为原因。我的视图层次结构是这样的:
按钮在图像视图之上,并且前层没有完全占据我的按钮,所以我没有理由不与按钮进行物理交互。在我的自定义视图的代码方面,我正在创建我的视图:
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
UIView *sub = [[[NSBundle mainBundle] loadNibNamed:@"ProfileView" owner:self options:nil] objectAtIndex:0];
[self addSubview:sub];
[sub setUserInteractionEnabled:YES];
[self setUserInteractionEnabled:YES];
CALayer *layer = sub.layer;
layer.masksToBounds = YES;
layer.borderWidth = 5.0;
layer.borderColor = [UIColor whiteColor].CGColor;
layer.cornerRadius = 30.0;
/*layer.shadowOffset = CGSizeZero;
layer.shadowRadius = 20.0;
layer.shadowColor = [[UIColor blackColor] CGColor];
layer.shadowOpacity = 0.8;
*/
}
return self;
}
我尝试了setUserInteractionsEnabled 的所有组合,但没有运气。 (是的,也将它们设置为在 Interface Builder 中检查)。我还阅读了另一个有类似问题的问题,我应该尝试覆盖“canBecomeFirstResponder”以返回“YES”,我也这样做了。但问题依然存在,我无法点击按钮。我没有为按钮提供任何特殊属性和设置,它只是一个普通的。我在视图中的其他对象(下面的标签、按钮后面的图像视图等)工作正常,没有问题。这里可能有什么问题?
谢谢,
可以。
更新:这是问题的快速重现:https://dl.dropbox.com/u/79632924/Test.zip 尝试运行并点击按钮。
【问题讨论】:
-
你能把这个视图提取到小型测试项目中吗?
-
愚蠢的问题:您是否记得将按钮链接到 IBAction?
-
@HotLicks 是的,它们是链接的。但问题不在于触摸时事件处理程序没有触发,问题在于按钮根本没有接收(或至少响应)触摸事件。
-
@DmitryShevchenko 我现在创建了一个迷你测试项目,根本没有 UIScrollViews 等,还有一个新视图和一个从头开始的 XIB(没有复制粘贴旧的)和按钮还是不行。
-
你能上传那个让我们看看吗?
标签: objective-c uiview uibutton interface-builder xib