超級簡單的問題,我很爲難的:iOS的檢測將停止
我使用一個UISlider
當用戶拖動(但不自來水)的滑塊時應該檢測。這個工程和拇指顯然可以拖動,但我需要在拖動事件停止時得到通知。有沒有一個控制事件,我沒有看到,這將允許我區分拖動停止和水龍頭停止?
或者是否有一些簡單的方法在touchesEnded:
方法中完成此操作?
任何幫助表示讚賞。謝謝。
超級簡單的問題,我很爲難的:iOS的檢測將停止
我使用一個UISlider
當用戶拖動(但不自來水)的滑塊時應該檢測。這個工程和拇指顯然可以拖動,但我需要在拖動事件停止時得到通知。有沒有一個控制事件,我沒有看到,這將允許我區分拖動停止和水龍頭停止?
或者是否有一些簡單的方法在touchesEnded:
方法中完成此操作?
任何幫助表示讚賞。謝謝。
[ratingScale addTarget:self action:@selector(slideEnds:) forControlEvents:UIControlEventTouchDragInside];
其中ratingScale將您的樣品UISlider & slideEnds將您的樣品選擇爲上述事件被解僱。
touchDragInside標準可確保只要繼續拖動就可以觸發選擇器。如果您只是在滑塊上註冊輕擊,它不會觸發。
使用此:
[slider addTarget:self action:@selector(slidingStopped:)forControlEvents:UIControlEventTouchUpInside];
- (void) slidingStopped:(id)sender
{
NSLog(@"stopped sliding");
}
我知道這是古老的,但這並不完整。您還需要爲UIControlEventTouchUpOutside發送消息,否則用戶可能會將他們的手指拖動到控件邊界之外,然後鬆開並且您不會收到消息。 – FreaknBigPanda 2013-07-22 14:56:01
@FreaknBigPanda你是對的!我建議編輯。 – tonytony 2013-08-18 19:31:13
我知道這是一個老的文章,但這裏就是我所做的。它可以適應UISlider問題。
BOOL buttonDidMove = NO;
- (void)viewDidLoad
{
[super viewDidLoad];
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button addTarget:self action:@selector(buttonMoved:withEvent:) forControlEvents:UIControlEventTouchDragInside];
[button addTarget:self action:@selector(buttonTouchUpInside) forControlEvents: UIControlEventTouchUpInside];
[button setTitle:@"Tap Me" forState:UIControlStateNormal];
button.frame = CGRectMake(80.0, 210.0, 160.0, 40.0);
button.backgroundColor = [UIColor yellowColor];
[self.view addSubview:button];
}
- (void)buttonTouchUpInside
{
if (buttonDidMove) {
buttonDidMove = NO;
return;
}
NSLog(@"buttonTouchUpInside");
[self initNetworkCommunication];
}
- (void)buttonMoved:(UIButton *)control withEvent:(UIEvent *)event
{
NSLog(@"buttonMoved");
buttonDidMove = YES;
UITouch *touch = [[event touchesForView:control] anyObject];
control.center = [touch locationInView:self.view];
}
希望這會有所幫助。
我怎麼才能檢測到用戶的手指拖動後,只是觸摸? – 2012-04-27 04:15:54