iOS UIPickerView:如何限制滚动范围



当您滚动UIPickerView时,您可以在触摸板上上下移动手指 - 上下移动屏幕的大小。有没有办法将上下滚动的范围限制在UIPickerView区域?因此,一旦您将手指移到UIPickerView之外,UIPickerView的滚动就会停止?我正在制作UIPIckerView作为游戏中的旋转器,我需要实现这一点才能进行公平的游戏。

您可以将

UITapGestureRecognizer与UIPickerView一起使用,然后就可以获得坐标。如果你在你想要的框架中得到点,那就做你的工作,否则返回

//viewDidLoad

UILongPressGestureRecognizer* gestureRecognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(pickerLongPressDetected:)];
    gestureRecognizer.minimumPressDuration = .001;
    gestureRecognizer.cancelsTouchesInView = NO;
    gestureRecognizer.delegate = self;
    [self.rollerView addGestureRecognizer:gestureRecognizer];
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{
    // return
    return true;
}
-(void)pickerLongPressDetected:(UILongPressGestureRecognizer *)gesture
{
    CGPoint touchPoint = [gesture locationInView:self.view];
    CGRect frame = self.rollerView.frame;
    if(!CGRectContainsPoint(frame, touchPoint))
    {
        //methods for when you scroll outside of your picker view's frame
    }
}

最新更新