我一直在努力实现一个包含两个不同触摸事件的按钮。假设用户点击按钮(触摸短时间),它会触发actionTapped,当用户长时间触摸按钮时触发actionTouched。
This link可能会提出一个想法,但它会让行动一遍又一遍地重复。
答案 0 :(得分:1)
您希望在touchDown事件上设置一个计时器,该计时器将执行您的longPress功能。在touchUp事件中,您可以取消计时器。真的很简单。
答案 1 :(得分:1)
iOS SDK包含两个完美满足您需求的手势识别器:
创建按钮而不对其添加任何操作。然后创建两个手势识别器,每种类型一个,每个都映射到您想要的操作。然后将手势识别器附加到按钮上。
答案 2 :(得分:0)
我将执行以下操作:
touchDownTime
)。在您的补足方法中:计算time elapsed = current time - touchDownTime
2.1转换为秒
2.2如果时间过去>所需的时间做action1(长触摸),否则做action2(短暂触摸)
答案 3 :(得分:0)
好的,这是我的解决方案。 scheduledTimerWithTimeInterval是触及它的最小间隔:
- (IBAction) micButtonTouchedDownAction {
self.micButtonTimer = [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(micButtonAction:) userInfo:nil repeats:YES];
self.micButtonReleased = FALSE;
}
- (IBAction) micButtonTouchedUpInsideAction {
self.micButtonReleased = TRUE;
}
- (IBAction) micButtonTouchedUpOutsideAction {
self.micButtonReleased = TRUE;
}
- (void) micButtonAction:(NSTimer *)timer {
[self.micButtonTimer invalidate];
self.micButtonTimer = nil;
if(self.micButtonReleased) {
NSLog(@"Tapped");
}
else {
NSLog(@"Touched");
}
}