gpt4 book ai didi

objective-c - 按像素识别 UIScrollView 移动

转载 作者:搜寻专家 更新时间:2023-10-30 19:44:08 24 4
gpt4 key购买 nike

我需要根据它们在屏幕上的位置更改 UIScrollView subview ,以便它们在向上移动时变小,在向下移动时变大。

有什么方法可以知道每一个像素的变化的contentOffset?我捕获了 scrollViewDidScroll: 方法,但是只要移动很快,两次调用之间可能会有一些 200pxls 的变化。

有什么想法吗?

最佳答案

基本上有两种方法:

  1. 子类 UIScrollView 并覆盖 touchesBegan/Moved/Ended

  2. 将您自己的 UIPanGestureRecognizer 添加到您当前的 UIScrollView

  3. 设置一个计时器,每次触发时,更新您的 View 阅读 _scrollview.contentOffset.x

在第一种情况下,你会为​​触摸处理方法做:

- (void)touchesMoved:(NSSet*)touches withEvent:(UIEvent*)event {

UITouch* touch = [touches anyObject];
_initialLocation = [touch locationInView:self.view];
_initialTime = touch.timestamp;

<more processing here>

//-- this will make the touch be processed as if your own logics were not there
[super touchesBegan:touches withEvent:event];
}

我很确定您需要为 touchesMoved 这样做;不知道你是否还需要在手势开始或结束时做一些特定的事情;在这种情况下,还会覆盖 touchesMoved:touchesEnded:。还要考虑 touchesCancelled:

在第二种情况下,你会做这样的事情:

//-- add somewhere the gesture recognizer to the scroll view
UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panView:)];
panRecognizer.delegate = self;
[scrollView addGestureRecognizer:panRecognizer];

//-- define this delegate method inside the same class to make both your gesture
//-- recognizer and UIScrollView's own work together
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
return TRUE;
}

第三种情况实现起来非常简单。不确定它是否会比其他两个提供更好的结果。

关于objective-c - 按像素识别 UIScrollView 移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14435283/

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