8

根据 Apple 的文档(以及许多其他地方),如果 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

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

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

Stop offset can not be modified for paging scroll views

为 NO 时,输出为 0。

有其他人得到这个吗?有谁知道这在iOS7中是否应该是这种方式?文档没有改变,所以我假设没有改变,但我想在向 Apple 提交错误报告并在我的所有代表调用中添加对 pagingEnabled 的检查之前,我会问大家。

4

0 回答 0