gpt4 book ai didi

ios - UIPageViewController with UISlider inside controller - 增加 slider 的命中区域

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:51:09 25 4
gpt4 key购买 nike

我的 PageViewController 中有多个 Controller ,在一个 Controller 中有几个 slider 。现在有一个问题,用户必须准确触摸 slider 圆圈(我不确定正确的表达方式,拇指? - 那个移动的部分),我想增加 slider 而不是整个 PageViewController 的 react 区域。我尝试了这些解决方案,但没有帮助:

  • thumbRectForBounds:

    - (CGRect)thumbRectForBounds:(CGRect)bounds trackRect:(CGRect)rect value:(float)value
    {
    return CGRectInset ([super thumbRectForBounds:bounds trackRect:rect value:value], 15, 15);
    }
  • 增加hitTest区域:

    - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
    if (CGRectContainsPoint(CGRectInset(self.frame, 200, 200), point) || CGRectContainsPoint(CGRectInset(self.frame, 200, 200), point)) {
    return self;
    }
    return [super hitTest:point withEvent:event];
    }

我的自定义 slider 类中有这些方法,因为我想重用它。我发现但尚未尝试的最后一件事是在 slider 上创建一些对象层,它“采取”手势并禁用 PageViewController 但我不确定该怎么做,我不确定它是否是好的/最佳解决方案。

最佳答案

我不是 UISlider 组件的忠实粉丝,因为正如您所注意到的,增加实际 slider 的点击区域并非易事。我建议您复制 UISlider 而不是使用平移手势以获得更好的用户体验:

我。使用带有 slider 图像的单独 UIImageView 创建 slider 背景。二.创建 PanGesture:

UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:);
[imageView addGestureRecognizer:pan];

三。实现 handlePan 方法:

- (IBAction)handlePan:(UIPanGestureRecognizer *)recognizer {

//pan (slide) begins
CGPoint translation = [recognizer locationInView:self.view];
translation.y = self.slideImage.center.y;
self.slideImage.center = translation;

if(recognizer.state == UIGestureRecognizerStateEnded) {
LTDebugLog(@"\n\n PAN, with spot: %f\n\n", self.slideImage.center.x);
//do something after user is done sliding
}
}

这种方法的最大好处是您将拥有更好的用户体验,因为您可以使响应式 UIImageView 随心所欲地变大。

或者,您可以将 UISlider 子类化并增加那里的点击空间,尽管根据我的经验,这会产生不同的结果。

希望对你有帮助

关于ios - UIPageViewController with UISlider inside controller - 增加 slider 的命中区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27634685/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com