iOS检测拖动已停止

时间:2012-04-27 02:37:38

标签: iphone objective-c ios uislider uitouch

我很难过的简单问题:

我正在使用UISlider来检测用户拖动滑块的拇指(但不会点击)。这很有用,显然可以拖动拇指,但是当拖动事件停止时我需要得到通知。是否有一个控制事件,我没有看到,这将允许我区分停止拖动和停止水龙头?

或者是否有一些简单的方法可以在touchesEnded:方法中完成此操作?

感谢任何帮助。感谢。

3 个答案:

答案 0 :(得分:3)

使用此:

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

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

答案 1 :(得分: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];
}

希望这有帮助。

答案 2 :(得分:0)

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

其中ratingScale将是您的样本UISlider& slideEnds将是您为上述事件触发的样本选择器。

touchDragInside条件确保只有在您继续拖动时才会触发选择器。如果您只是在滑块上注册水龙头,它就不会触发。