gpt4 book ai didi

ios - 是否可以自定义触发 UIScrollView 滚动的滑动手势识别?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:48:26 42 4
gpt4 key购买 nike

我从 UIScrollView 创建了一个自定义子类并实现了 touchesBegantouchesMovedtouchesEndedtouchesCancelled 方法。

但是我对事情的运作方式并不满意。特别是,何时调用提到的方法以及何时 UIScrollView 决定实际滚动(拖动)。

UIScrollView 即使第一个触摸点和最后一个触摸点之间的差异在垂直方向上非常小,也会滚动。所以我几乎可以水平滑动,UIScrollView 将根据那个微小的差异向上或向下滚动。(这在正常使用情况下完全没问题)

Default UIScrollView behavior

这两次滑动都会导致 UIScrollView 向下滚动。

但是我很感兴趣是否可以以某种方式调整它,以便它表现得像这样:

Desired behavior

基本上,接近水平的滑​​动会被 touchesBegan 和相关方法接收,并且不会启动滚动。然而,绿色滑动方向仍会启动滚动...

编辑:

我忘记说了,touchesBegan 如果您的手指在屏幕上停留一小段时间然后四处移动,就会调用亲戚。所以不是经典的滑动手势...

最佳答案

Ivan,我认为你正在尝试做与 Facebook 页面相同的效果,并拖动你的 scrollview ,所以让 scrollview 跟随你的手指,如果这是正确的,我建议你忘记触摸事件,并从UIPanGesture ,它在这些情况下是最好的,所以在调用该手势的委托(delegate)中,为其放置以下代码:

    //The sender view, in your case the scollview
UIScrollView* scr = (UIScrollView*)sender.view;
//Disable the scrolling flag for the sake of user experience
[scr setScrollEnabled:false];

//Get the current translation point of the scrollview in respect to the main view
CGPoint translation = [sender translationInView:self.view];

//Set the view center to the new translation point
float translationPoint = scr.center.x + translation.x;
scr.center = CGPointMake(translationPoint,scr.center.y);
[sender setTranslation:CGPointMake(0, 0) inView:self.view];

关于ios - 是否可以自定义触发 UIScrollView 滚动的滑动手势识别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16210612/

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