gpt4 book ai didi

ios - 检测 UIScrollView 上的触摸位置?

转载 作者:技术小花猫 更新时间:2023-10-29 10:41:54 27 4
gpt4 key购买 nike

我想在用户开始拖动时检测我的 UIScrollView 中的(初始)触摸位置。我用谷歌搜索了这个问题,很多人似乎都在为这个问题而苦苦挣扎。现在,虽然我仍然无法理解为什么 Apple 不允许用户在 ScrollView 中访问触摸信息,但我还是忍不住自己寻找解决方案。但是我所有的尝试都失败了,所以我想问你。

这是我认为可行的方法:

我在我的 UIScrollView 子类中设置了一个像这样的 UIPanGestureRecognizer,并将它添加到它的手势识别器中:

UIPanGestureRecognizer *tapDrag = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(touchedAndDragged:)];
tapDrag.cancelsTouchesInView = NO;
tapDrag.delegate = self;
[self addGestureRecognizer:tapDrag];

以及对应的方法:

-(void)touchedAndDragged:(UIPanGestureRecognizer*)t{

CGPoint loc = [t locationInView:self];
//do something with location (that is exactly what I need)
//...

//Now DISABLE and forward touches to scroll view, so that it scrolls normally
t.enabled = NO;
/****
?????
*****/

}

正如评论所指出的,我想在点到点后禁用平移手势,然后禁用识别器(同时仍在拖动!)并将触摸“传递”到我的 ScrollView ,以便用户可以滚动一般。这完全可行吗?还有其他解决方案吗?

最佳答案

好吧,UIScrollView 已经有一个内置的平移手势,您可以使用它。用法很简单,只需将类设置为 ScrollView 的委托(delegate)(利用 scrollViewWillBeginDragging)并使用 UIPanGestureRecognizer 的 -locationInView: 确定触摸位置。

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
CGPoint location = [scrollView.panGestureRecognizer locationInView:scrollView];
NSLog(@"%@",NSStringFromCGPoint(location));
}

关于ios - 检测 UIScrollView 上的触摸位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17344597/

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