我在我的應用程序中劃分了UIButton
,並且在完成按下按鈕時突出顯示顏色仍然存在很多次。我無法弄清楚究竟是什麼原因造成的,因爲它似乎只是偶然發生,但似乎約有50%的時間發生。我很確定這是可重複的。當我在UITableViewCell
中有一個按鈕時,我經常會發生這種情況,並且在表視圖仍在滾動時點擊它。UIButton子類突出顯示錯誤(突出顯示在點擊或觸摸後仍然存在或存在)
我在覆蓋子類中setHighlighted
方法的方式有什麼問題嗎?這是我的實現:
@implementation SCPFormButton
- (id)initWithFrame:(CGRect)frame label:(NSString *)label
{
self = [super initWithFrame:frame];
if (self) {
UILabel *buttonLabel = [[UILabel alloc] init];
buttonLabel.attributedText = [[NSAttributedString alloc] initWithString:[label uppercaseString] attributes:kButtonLabelAttributes];
[buttonLabel sizeToFit];
buttonLabel.frame = CGRectMake(kMaxWidth/2 - buttonLabel.frame.size.width/2, kStandardComponentHeight/2 - buttonLabel.frame.size.height/2, buttonLabel.frame.size.width, buttonLabel.frame.size.height);
[self addSubview:buttonLabel];
self.backgroundColor = kFormButtonColorDefault;
}
return self;
}
- (void)setHighlighted:(BOOL)highlighted
{
self.backgroundColor = highlighted ? kFormButtonColorHighlighted : kFormButtonColorDefault;
[self setNeedsDisplay];
}
@end
爲什麼,當然。不能相信我沒有想到這一點。我把它放在我的代碼中,看看這個bug是否仍然出現。 –
問題似乎消失了,但我必須長按按鈕才能突出顯示。快速按下不會顯示突出顯示的動畫,但會觸發動作。還有什麼我錯過了? –
你會在'setHighlighted'內放置一個NSLog並檢查它是否在短按的情況下被調用?可能你可能需要檢測到一個觸摸(而不是觸摸),並從那裏處理突出顯示的狀態... – sergio