[英]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.