1

我很难过的超级简单的问题:

我正在使用UISlider应该检测用户何时拖动(但不点击)滑块的拇指。这很有效,拇指显然可以被拖动,但是当拖动事件停止时我需要得到通知。是否有一个我没有看到的控制事件可以让我区分拖动的停止和点击的停止?

或者在方法中有一些简单的方法来完成这个touchesEnded:吗?

任何帮助表示赞赏。谢谢。

4

3 回答 3

3

用这个:

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

- (void) slidingStopped:(id)sender
{
    NSLog(@"stopped sliding");
}
于 2012-08-03T08:48:51.797 回答
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];
}

希望这可以帮助。

于 2013-09-25T23:37:39.393 回答
0
[ratingScale addTarget:self action:@selector(slideEnds:) forControlEvents:UIControlEventTouchDragInside];

其中 ratingScale 将是您的示例 UISlider 和 slideEnds 将是您为上述事件触发的示例选择器。

touchDragInside 标准确保只有在您继续拖动时才会触发选择器。如果您只是在滑块拇指上注册点击,它不会触发。

于 2012-04-27T02:51:09.777 回答