Jea*_*ean 21 iphone cocoa-touch ios
我做了足够的google,并且在发布之前我确实在stackoverflow中检查了这些帖子(在UIScrollView中查找滚动的方向?).我在iPhone应用程序中拥有动态数量的照片,正在显示UIScrollView.在任何时候,我只在滚动视图中显示3张照片.当我有4张照片时,总计:第1张照片:偏移量0.0显示第2张照片:偏移量320.0显示第3张照片:显示偏移量640.0
现在,当用户滚动到第4张照片时,滚动视图将重置为0.0偏移.如果用户试图滚动"超出"第4张照片,则滚动应仅在右向停止(因此用户不会滚动"超出").但是目前,用户'能够'滚动到最后一张照片之外; 但是,我以编程方式检测到此并重置偏移量.但它看起来并不整洁,因为用户会瞬间看到黑色背景.我想检测用户是否已经开始向右滚动(请记住,向左滚动'即'前一张'照片就可以了)scrollViewWillBeginDragging,以便我可以停止向右滚动.
我尝试了什么:
self.scrollView.panGestureRecognizer's
translationInView是行不通的,因为首先没有
panGestureRecognizer返回实例(!),尽管UIScrollView API声称如此.scrollViewDidEndDecelerating是可能的,虽然它不符合我的目的.mwi*_*but 29
在scrollViewWillBeginDragging检查滚动视图时,我没有确定方向的问题panGestureRecognizer:
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
CGPoint translation = [scrollView.panGestureRecognizer translationInView:scrollView.superview];
if(translation.y > 0)
{
// react to dragging down
} else
{
// react to dragging up
}
}
Run Code Online (Sandbox Code Playgroud)
我发现当用户在禁止的方向上拖动时,在第一次拖动移动时取消滚动非常有用.
PAC*_*PAC 12
适用于swift 2.0+和ios 8.0+
func scrollViewWillBeginDecelerating(scrollView: UIScrollView) {
let actualPosition = scrollView.panGestureRecognizer.translationInView(scrollView.superview)
if (actualPosition.y > 0){
// Dragging down
}else{
// Dragging up
}
}
Run Code Online (Sandbox Code Playgroud)
Osc*_*car 12
Swift 3解决方案
1-添加UIScrollViewDelegate
2-添加此代码
func scrollViewWillBeginDecelerating(_ scrollView: UIScrollView) {
let actualPosition = scrollView.panGestureRecognizer.translation(in: scrollView.superview)
if (actualPosition.y > 0){
// Dragging down
}else{
// Dragging up
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢你,克里斯.这对我有用,最后:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
// Detect the scroll direction
if (lastContentOffset < (int)scrollView.contentOffset.x) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
这是我使用的,它至少在iOS 6.0上很好用:
- (void)scrollViewDidScroll:(UIScrollView*)scrollView
{
CGPoint translation = [scrollView.panGestureRecognizer translationInView:scrollView];
// Detect direction by accessing x or y of translation
}
Run Code Online (Sandbox Code Playgroud)
为lastContentOffset... 保存实例变量
| 归档时间: |
|
| 查看次数: |
28664 次 |
| 最近记录: |