对于我的自定义UIView,我已经重写了touchesBegan
方法。我告诉它要做的是改变它的图层的背景颜色:
dispatch_async(dispatch_get_main_queue()){
self.layer.backgroundColor = clr_someCGColor
}
它的行为很奇怪。如果我在横向模式下快速点击视图,它会做得很好,但如果我在纵向模式下这样做,我必须按住它一段时间才能看到结果,然而,如果我快速点击,touchesEnded
方法会立即被调用。是什么原因导致了纵向延迟?
去掉dispatch_async
包装。它所做的只是造成延迟(我们不能在主线程上执行,直到,正如你正确地说,水龙头结束,touchesEnded
来了又走)。在touchesBegan
中,你已经在主线程上了,所以不需要这个额外的延迟。
使用手势识别器就更好了。