我将 UIButton 子类化,以便在drawRect:
. 为了响应触摸事件,我添加了这些目标/动作:
[self addTarget:self action:@selector(selectedButton:) forControlEvents:UIControlEventTouchDown | UIControlEventTouchDragInside];
[self addTarget:self action:@selector(deSelectedButton:) forControlEvents:UIControlEventTouchUpInside | UIControlEventTouchDragOutside | UIControlEventTouchUpOutside];
一个示例实现是这样的:
- (void)selectedButton:(id)sender {
self.isSelected = YES;
[self setNeedsDisplay];
}
这工作得很好。唯一的问题是,如果我非常快速地触地/向上,动作仍然被处理,但是选择/取消选择的方法被调用得太快以至于背景永远不会更新。但如果我再按下一段时间,效果会很好。
我在这里想念什么?我怎样才能让我的背景更新最轻微的接触?我曾尝试延迟 deSelect 调用以更新布局,但它没有效果。