8

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

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