2012-04-27 82 views
1

超級簡單的問題,我很爲難的:iOS的檢測將停止

我使用一個UISlider當用戶拖動(但不自來水)的滑塊時應該檢測。這個工程和拇指顯然可以拖動,但我需要在拖動事件停止時得到通知。有沒有一個控制事件,我沒有看到,這將允許我區分拖動停止和水龍頭停止?

或者是否有一些簡單的方法在touchesEnded:方法中完成此操作?

任何幫助表示讚賞。謝謝。

回答

0
[ratingScale addTarget:self action:@selector(slideEnds:) forControlEvents:UIControlEventTouchDragInside]; 

其中ratingScale將您的樣品UISlider & slideEnds將您的樣品選擇爲上述事件被解僱。

touchDragInside標準可確保只要繼續拖動就可以觸發選擇器。如果您只是在滑塊上註冊輕擊,它不會觸發。

+1

我怎麼才能檢測到用戶的手指拖動後,只是觸摸? – 2012-04-27 04:15:54

3

使用此:

[slider addTarget:self action:@selector(slidingStopped:)forControlEvents:UIControlEventTouchUpInside]; 

- (void) slidingStopped:(id)sender 
{ 
    NSLog(@"stopped sliding"); 
} 
+3

我知道這是古老的,但這並不完整。您還需要爲UIControlEventTouchUpOutside發送消息,否則用戶可能會將他們的手指拖動到控件邊界之外,然後鬆開並且您不會收到消息。 – FreaknBigPanda 2013-07-22 14:56:01

+0

@FreaknBigPanda你是對的!我建議編輯。 – tonytony 2013-08-18 19:31:13

1

我知道這是一個老的文章,但這裏就是我所做的。它可以適應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]; 
} 

希望這會有所幫助。