iOS - UIViews没有响应触摸事件


0

我正在尝试响应某些UIViews上的触摸事件。这里的视图控制器看起来如何在IB:

enter image description here

这里的视图层次:

enter image description here

我已经实现了所有四个 “触动” 的方法如下:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ 
    UITouch *touch = [touches anyObject]; 
    if(touch.view==locPhoneView){ 
     locPhoneView.backgroundColor=[ColorUtility colorWithHexString:@"83d3f0"]; 
    } 
    if(touch.view==locAddressView){ 
     locAddressView.backgroundColor=[ColorUtility colorWithHexString:@"83d3f0"]; 
    } 
} 

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{ 
    UITouch *touch = [touches anyObject]; 
    if(touch.view==locPhoneView){ 
     locPhoneView.backgroundColor=[UIColor whiteColor]; 
    } 
    if(touch.view==locAddressView){ 
     locAddressView.backgroundColor=[UIColor whiteColor]; 
    } 

} 
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event{ 

} 
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{ 

} 

无论我在屏幕上触摸什么位置,都不会发送事件。我在“touchesBegan”开头有一个断点,而且这段代码从未达到。

所有视图都已选中“已启用用户交互”,并已正确连接到其网点。

我错过了什么?在我的项目中的其他地方,我正在做同样的事情,它工作正常。

它可能与我的根视图是UIScrollView这一事实有关吗?

谢谢!

编辑:我遵循了下面的建议,并将子类别UIScrollView,以便接触发送到NextResponder。看来,我现在正在接触,但是,视图的背景颜色实际上是否改变的行为是不正确的。

例如,如果我快速点击视图,“触摸”方法会触发,但背景颜色不会更改。但是,如果我点按并保持大约一秒钟,背景颜色会根据我的预期改变。任何想法可能会导致这种奇怪的行为?

编辑:添加一行:

[scrollView setDelaysContentTouches:NO]; 

我viewDidLoad方法解决了这个问题对我来说。谢谢你的帮助!

1

你是对的,你的问题是你的意见被放置在一个UIScrollView中。滚动视图获取所有触摸事件并且不会将它们传递给子视图。

你可以为这个问题的解决方案: