簡體   English   中英

通過UISwipeGestureRecognizer更改UISlider值

[英]Changing UISlider value by UISwipeGestureRecognizer

我試圖通過UISwipeGestureRecognizer更改滑塊值,但是看來我的代碼不起作用! 我正在使用此代碼:

- (void)viewDidLoad
{

    [super viewDidLoad];

    UISwipeGestureRecognizer *recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(didSwipe:)];
    [recognizer setDirection:(UISwipeGestureRecognizerDirectionRight)];
    [self.view addGestureRecognizer:recognizer];


    recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(didSwipe:)];
    [recognizer setDirection:(UISwipeGestureRecognizerDirectionLeft)];
    [self.view addGestureRecognizer:recognizer];
    recognizer.delegate = self;

}


- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
    if ([touch.view isKindOfClass:[UISlider class]]) {
        // prevent recognizing touches on the slider
        return NO;
    }

    return YES;
}



- (void) didSwipe:(UISwipeGestureRecognizer *)recognizer{
    if([recognizer direction] == UISwipeGestureRecognizerDirectionLeft){

        NSLog(@"left");

         _label.text = [NSString stringWithFormat:@"%f",_slider.value];

        }else{

         NSLog(@"right");
    }
}

它只是將值更改為0.0,就像滑動一些東西一樣!

在didSwipe:方法中,您只顯示值,而不嘗試更改它。 用如下代碼替換您的代碼:

- (void) didSwipe:(UISwipeGestureRecognizer *)recognizer{
    if([recognizer direction] == UISwipeGestureRecognizerDirectionLeft){

        NSLog(@"left");

         _label.text = [NSString stringWithFormat:@"%f",_slider.value];
         // TODO: make sure that the value is not less than min slider value
         _slider.value = _slider.value - 5;

        }else{
         // TODO: make sure that the value is not larger than max slider value
         _slider.value = _slider.value + 5;
         NSLog(@"right");
    }
}

另外,為了實現最佳化,您可以只用一個替換兩個手勢識別器:

    UISwipeGestureRecognizer *recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(didSwipe:)];
    [recognizer setDirection:(UISwipeGestureRecognizerDirectionRight | UISwipeGestureRecognizerDirectionLeft)];
    recognizer.delegate = self;
    [self.view addGestureRecognizer:recognizer];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM