iOS图层颜色更改
对于我的自定义UIView,我已经重写了iOS图层颜色更改,ios,swift,uiview,Ios,Swift,Uiview,对于我的自定义UIView,我已经重写了touchesbreated方法。我告诉它要做的是改变“图层”的背景颜色: dispatch_async(dispatch_get_main_queue()){ self.layer.backgroundColor = clr_someCGColor } 它的行为很奇怪。如果我在横向中快速点击视图,它会做得非常好,但是如果我在纵向中这样做,我必须按住它一段时间才能看到结果,但是如果我快速点击,就会立即调用touchesend方法。造成纵向延迟的原
touchesbreated
方法。我告诉它要做的是改变“图层”的背景颜色:
dispatch_async(dispatch_get_main_queue()){
self.layer.backgroundColor = clr_someCGColor
}
它的行为很奇怪。如果我在横向中快速点击视图,它会做得非常好,但是如果我在纵向中这样做,我必须按住它一段时间才能看到结果,但是如果我快速点击,就会立即调用
touchesend
方法。造成纵向延迟的原因可能是什么?删除dispatch\u async
包装器。它所做的只是造成延迟(我们不能在主线程上执行,直到点击结束并且touchesend
来了又走了,正如您所说的那样)。您已经在主线程的touchesbeated
中,因此不需要额外延迟
更好的是,使用轻触手势识别器。我在第一次遇到问题后将其放入
dispatch\u async
包装器中,再次移除它也没有帮助UITapgestureRecognitizer
无法完全控制触摸事件,我需要将图层的背景设置为clr\u active
,然后在触摸结束后返回到clr\u normal
,这很好。但是dispatch\u async
在这里对您没有帮助。我有一个应用程序,我可以做同样的事情:我有一个轻触手势识别器,但我也想在手指放下时在活动外观和非活动外观之间切换,所以我使用触摸开始
和触摸结束
,效果很好。问题可能存在于您尚未展示的代码中,但您尚未展示它,所以现在有办法知道。