我正在检测用户是否按下了2秒:
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc]
initWithTarget:self
action:@selector(handleLongPress:)];
longPress.minimumPressDuration = 2.0;
[self addGestureRecognizer:longPress];
[longPress release];
这就是我如何处理长时间的新闻:
-(void)handleLongPress:(UILongPressGestureRecognizer*)recognizer{
NSLog(@"double oo");
}
当我按下超过2秒时,文本"double oo“被打印两次。为什么会这样呢?我该怎么修复呢?
发布于 2010-11-11 23:43:18
要检查选择器的状态,只需在UILongPressGestureRecognizer方法上添加一条if语句:
- (void)handleLongPress:(UILongPressGestureRecognizer *)sender {
if (sender.state == UIGestureRecognizerStateEnded) {
NSLog(@"Long press Ended");
} else if (sender.state == UIGestureRecognizerStateBegan) {
NSLog(@"Long press detected.");
}
}
发布于 2011-08-19 04:55:26
您需要检查正确的状态,因为每个状态都有不同的行为。最有可能的情况是,您将需要UILongPressGestureRecognizer
的UIGestureRecognizerStateBegan
状态。
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc]
initWithTarget:self
action:@selector(handleLongPress:)];
longPress.minimumPressDuration = 1.0;
[myView addGestureRecognizer:longPress];
[longPress release];
..。
- (void)handleLongPress:(UILongPressGestureRecognizer *)gesture {
if(UIGestureRecognizerStateBegan == gesture.state) {
// Called on start of gesture, do work here
}
if(UIGestureRecognizerStateChanged == gesture.state) {
// Do repeated work here (repeats continuously) while finger is down
}
if(UIGestureRecognizerStateEnded == gesture.state) {
// Do end work here when finger is lifted
}
}
发布于 2016-11-26 20:49:53
Swift 3.0:
func handleLongPress(sender: UILongPressGestureRecognizer) {
if sender.state == .ended {
print("Long press Ended")
} else if sender.state == .began {
print("Long press detected")
}
https://stackoverflow.com/questions/3319591
复制相似问题