Извините, если это основной вопрос, я не могу найти окончательный ответ.
Я настроил 4 кнопки:
// Add the normal and selected state for each button
UIImage *buttonImage = [UIImage imageNamed:[NSString stringWithFormat:@"HotspotNumber2-%i.png",(hotspotID +1)]];
[hotspotButton setImage:buttonImage forState:UIControlStateNormal];
UIImage *buttonImageSelected = [UIImage imageNamed:[NSString stringWithFormat:@"HotspotNumber2-%is.png",(hotspotID +1)]];
[hotspotButton setImage:buttonImageSelected forState:UIControlStateSelected];
[hotspotButton setImage:buttonImageSelected forState:UIControlStateHighlighted];
[hotspotButton addTarget:self action:@selector(hotspotTouch:) forControlEvents:UIControlEventTouchDown];
И я улавливаю события касания в методе:
// Called when a hotspot is touched
-(void)hotspotTouch:(id)sender{
// Deselect the hotspot currently selected
if (selectedHotspot) [selectedHotspot setSelected:NO];
selectedHotspot = (UIButton *)sender;
[selectedHotspot setSelected:YES];
// Get dictionary of hot spot that is pressed
NSDictionary *hotspot = [hotspots objectAtIndex:[selectedHotspot tag]];
NSString *imageFileName = [hotspot objectForKey:ksHotspotItemKey];
if ([imageFileName length] > 0) currentImageView.image = [UIImage imageNamed:imageFileName];
}
}
Проблема, с которой я столкнулся, заключается в том, что выделенное изображение кнопки не отображается, пока пользователь не отпустит палец, что является заметной задержкой. Я видел, как другие решали подобные проблемы, изменяя фоновое изображение вместо состояния кнопки или выполняя селектор после задержки, чтобы цикл выполнения получил шанс на завершение. Оба метода кажутся мне хаком, и я был бы признателен, если бы кто-нибудь смог объяснить, что здесь происходит и какой самый надежный способ добиться эффекта, который, как только пользователь нажимает на кнопку, переходит в выделенное состояние.
Заранее спасибо,
Dave