1
对不起,如果这是一个基本问题,我找不到一个明确的答案。UIButton状态改变不会发生,直到接触结束
我已经设置了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];
}
}
我的问题是,对于按钮高亮显示的图像不显示直到用户释放他们的手指,这是明显的延迟。我已经看到其他人通过更改背景图像而不是按钮状态或延迟后执行选择器来解决类似的问题,因此运行循环有机会结束。这两种方法对我来说似乎都是诡计,如果有人能够解释这里发生的事情,以及实现这种效果的最可靠方法是什么,只要用户触摸按钮,它就会变为突出显示的状态。
由于提前,
戴夫
请仅尝试使用UIControlEventTouchDown事件。 – Ravin 2011-04-14 11:00:33
嗨Ravin,刚试过只TouchDown事件和相同的问题。如果触地,方法会被调用,因为主图像被改变,但是按钮状态不会改变为高亮显示,直到您按下TouchUp或DragOutside按钮的矩形。 – 2011-04-14 15:58:07