标签: uiscrollviewdelegate

UIScrollView里面的UIScrollView?

有人提出类似的问题,但我的困境实际上与他们的相反.我有一个全屏,分页UIScrollView,每页都是屏幕的大小.在其中,我有一些页面本身UIScrollViews,宽度大于屏幕宽度.内部滚动UIViews视图位于其他几层之内,它们不是外部滚动视图的直接子视图.

我想要的是,当我到达其中一个内部滚动视图的末尾时,它开始滚动外部滚动视图.从我在这里看到的其他问题来看,它看起来应该发生,但由于某些原因它不会发生.在我的设置中可能导致这种情况停止发生?触摸堆栈中的内外滚动应该发生在内滚动和外滚动之间?

编辑:有没有办法将触摸或平移手势命令传递到外部滚动视图使用我感觉内部视图通过scrollViewDidScroll委托方法超过其边界?

objective-c touch uiscrollview uiscrollviewdelegate ios

8
推荐指数
1
解决办法
332
查看次数

取消当前的UIScrollView触摸

我有UIScrollView一些子视图等等.我也是scrollView的delegate并且实现了- (void)scrollViewDidScroll:(UIScrollView *)scrollView.在我的卷轴下面还有另一个视图.

我想显示该视图,如果scrollView contentOffset在x轴上低于50px,"重置"scrollView contentOffset并取消当前的scrollView手势,以便用户在新视图出现时不会操纵其内容.

我已经实现了这样的方法:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    if (scrollView.contentOffset.x < -50)
    {
        scrollView.contentOffset = CGPointZero;
        [self showBackView];
        //here I want to cancel the current touch on the scrollview since it keeps scrolling if I drag my finger
    }
}
Run Code Online (Sandbox Code Playgroud)

我试图将userInteractionEnabled属性设置为NO但只有在触摸结束后它才会生效.我尝试过其他一些属性,但似乎都没有.

我怎样才能解决这个问题?

objective-c uiscrollview uiscrollviewdelegate ios

8
推荐指数
1
解决办法
6142
查看次数

UIScrollViewDelegate scrollViewWillEndDragging:withVelocity:targetContentOffset使用pagingEnabled = YES调用

根据Apples文档(以及许多其他地方),如果UIScrollView.pagingEnabled设置为YES,则不会调用UIScrollViewDelegate:scrollViewWillEndDragging:withVelocity:targetContentOffset.在iOS6上,这似乎是真的,但是,在iOS7上,无论设置什么是pagingEnabled,它总是被我调用.

这是一个简单的测试视图控制器:

@interface ViewController ()
<UIScrollViewDelegate>
@property (weak, nonatomic) IBOutlet UIWebView *webView;
@end

@implementation ViewController

- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset
{
    NSLog(@"%d", scrollView.pagingEnabled);
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    [self loadHTML];
    [self configureWebView];
}

- (void)loadHTML
{
    NSString* htmlPath = [[NSBundle mainBundle] pathForResource:@"htmlContent" ofType:@"html"];
    NSString* htmlString = [NSString stringWithContentsOfFile:htmlPath encoding:NSUTF8StringEncoding error:nil];
    [_webView loadHTMLString:htmlString baseURL:nil];
}

- (void)configureWebView
{
    [_webView.scrollView setDelegate:self];
    _webView.scrollView.pagingEnabled = YES;
}

@end
Run Code Online (Sandbox Code Playgroud)

在iOS7中,如果pagingEnabled == YES,则scrollViewWillEndDragging中的NSLog打印1,如果设置为NO,则打印0.

在iOS6中,当pagingEnabled == YES时,控制台输出为:

Stop offset can not be modified for …
Run Code Online (Sandbox Code Playgroud)

objective-c uiscrollview uiscrollviewdelegate ios

8
推荐指数
0
解决办法
1026
查看次数

iOS版.如何限制UIScrollview滚动到有限的范围?

在UIScrollView的左/右滚动上设置限制的最佳方法是什么.我原本以为这很容易,但我所有的尝试都没有成功.

所以,为了清楚起见,我需要一个解决方案,允许我在使用我的应用程序时以编程方式限制滚动范围.这通常是为了响应所显示数据的变化.

谢谢,
道格

uiscrollview uiscrollviewdelegate ios5

7
推荐指数
3
解决办法
9979
查看次数

scrollViewDidScroll委托自动调用

我在我的应用程序中使用scrollViewDidScroll委托.

但是,很多时候,即使我开始滚动,这个委托也会被调用,这会产生很多问题.我听说即使设置了特定滚动视图的contentSize,那么此时该委托scrollViewDidScroll即将调用.

调用此委托的不同方案有哪些.控制它的步骤是什么?

我可以设置任何参数来处理这个吗?

iphone xcode uiscrollview uiscrollviewdelegate ios

7
推荐指数
3
解决办法
6911
查看次数

检测UITableView的底部"反弹"

我有一个表视图,当用户向下滚动UITableView(向上推拇指)时执行动画,当用户在UITableView上向上滚动(按下拇指向下)时,执行不同的动画.

问题是当用户到达UITableView的底部并且它反弹时,表会记录向上然后向下移动,从而在不应该执行时执行动画.

滚动到顶部时会发生同样的确切行为; 但是,我能够像这样检测它:

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {

    self.lastContentOffset = scrollView.contentOffset;

}


-(void) scrollViewDidScroll:(UIScrollView *)scrollView {

    // Check if we are at the top of the table
    // This will stop animation when tableview bounces

    if(self.tableView.contentOffset.y < 0){
        // Dont animate, top of tableview bounce


    } else {

        CGPoint currentOffset = scrollView.contentOffset;

        if (currentOffset.y > self.lastContentOffset.y) {

            // Downward animation
            [self animate:@"Down"];

        } else {

            // Upward
            [self animate:@"Up"];

        }

        self.lastContentOffset = currentOffset;

    }

}
Run Code Online (Sandbox Code Playgroud)

这很完美,但对于我的生活,我无法弄清楚是否有条件来检测底部.我确信这很简单,我只是想不通.

uitableview uiscrollviewdelegate ios

7
推荐指数
1
解决办法
1万
查看次数

in in CGPoint*是什么意思?

在UIScrollView委托方法中,有:

scrollViewWillEndDragging:withVelocity:targetContentOffset:

最后一个参数是:

(inout CGPoint *)targetContentOffset

我很好奇inout意味着什么以及为什么CGPoint是一个指针.我尝试将targetContentOffset打印到控制台,但我不知道该怎么做.任何帮助表示赞赏!

objective-c uiscrollview uiscrollviewdelegate ios

7
推荐指数
1
解决办法
2528
查看次数

如何使用"超大"页面创建分页UIScrollView

是否有建议的方法来创建页面UIScrollView,其页面宽度超过UISrollView的边界?

我需要这样的东西.

在此输入图像描述

第2页内的正常滚动和分页模式,页面边缘有"橡皮筋"效果.

对我来说,分页效果看起来有点复杂,如果你快速浏览就转到下一页,如果你滑得慢,你会看到边缘的新页面,并且只有在某一点之后页面才会被更改.

也许有人可以对处理这个问题的方法有所了解,这是否可能只使用UIScrollViewDelegate方法或者我必须继承子类?

iphone uiscrollview uiscrollviewdelegate

6
推荐指数
1
解决办法
1740
查看次数

为什么我不能再存储UIWebView的UIScrollView委托属性了?

在ios5之前,我能够像这样访问UIWebView的UIScrollView委托:

for (id subview in webView1.subviews){
    if ([[subview class] isSubclassOfClass: [UIScrollView class]])  {
        UIScrollView * s = (UIScrollView*)subview;
        OldDelegate = s.delegate;//OldDelegate is type id
                    s.delegate = self;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,我知道这不是正确的方法,但当时(据我所知),这是唯一的方法.iOS 5改变了这一点,所以我试图以iOS 5的方式做到这一点:

UIScrollView * s = webView.scrollView;
Olddelegate = s.delegate;
s.delegate = self;
Run Code Online (Sandbox Code Playgroud)

但无论哪种方式我尝试这样做,我的OldDelegate对象的值是0x0.保留这个委托值非常重要,但尽可能地尝试,我只是得到0x0.

有任何想法吗?

我没有使用ARC ......

iphone uiwebview uiscrollview uiscrollviewdelegate ios5

6
推荐指数
1
解决办法
859
查看次数

scrollViewDidEndDecelerating检测正在运行的集合视图

我使用这种方法来组织分页:

- scrollViewDidEndDecelerating
Run Code Online (Sandbox Code Playgroud)

当我滚动我的时候,UICollectionView我在屏幕上更改了一些内容.但是我的屏幕上有很少的UICollectionView,我只需要一个.

uiscrollviewdelegate ios uicollectionview

6
推荐指数
1
解决办法
3813
查看次数