ios - uiscrollview 在用户停止拖拽但是手指没有离开的时候,会调用哪个方法?
PHP中文网
PHP中文网 2017-04-17 17:59:44
0
2
259
scrollViewDidEndDecelerating  
scrollViewDidEndScrollingAnimation
scrollViewDidEndDragging

这三个方法都不对

PHP中文网
PHP中文网

认证0级讲师

membalas semua(2)
刘奇

Tambahkan kod yang tersedia, harus ada cara yang lebih baik, untuk rujukan sahaja:

//
//  ViewController.m
//  ffff
//
//  Created by Alan Zhang on 16/5/16.
//  Copyright © 2016年 Alan's Lab. All rights reserved.
//

#import "ViewController.h"

@interface ViewController () <UIScrollViewDelegate>

@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;
@property (strong, nonatomic) NSTimer *timer;
@property (weak, nonatomic) UIPanGestureRecognizer *pan;

@end

@implementation ViewController

- (void)viewDidLoad
{
    self.scrollView.delegate = self;
    self.scrollView.contentSize = CGSizeMake(400, 400);
    self.pan = self.scrollView.panGestureRecognizer;
}

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
    if (self.timer) {
        [self.timer invalidate];
        self.timer = nil;
    }
}

-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    if (!self.timer && self.pan.state == UIGestureRecognizerStateChanged) {
        self.timer = [NSTimer scheduledTimerWithTimeInterval:0.2 target:self selector:@selector(stateDetection) userInfo:nil repeats:YES];
        [[NSRunLoop currentRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];
    }
}

- (void)stateDetection
{
    static CGPoint lastPos;
    if (!CGPointEqualToPoint(lastPos, [self.pan translationInView:self.scrollView])) {
        lastPos = [self.pan translationInView:self.scrollView];
    } else if (self.pan.state == UIGestureRecognizerStateChanged) {
        if (self.timer) {
            [self handleState];
            [self.timer invalidate];
            self.timer = nil;
        }
    }
}

- (void)handleState
{
        NSLog(@"Finger Stopped State");
}

@end

Tampalkannya ke dalam ViewController.m projek paparan tunggal yang baru dibuat, dan kemudian seret paparan skrol pada papan cerita.


Tiada keadaan pratakrif untuk ini.

UIScrollViewDelegate - scrollViewDidScroll: akan dipanggil selepas julat visual paparan skrol berubah, yang lebih dekat dengan penerangan anda.

Jika

tidak mencukupi, laksanakan sendiri dan rekod masa apabila jari anda bergerak ke dalam - scrollViewDidScroll:. Kemudian pantau perbezaan antara masa semasa dan masa yang direkodkan Jika melebihi masa tertentu, ia dianggap bahawa jari telah berhenti.


- scrollViewWillBeginDragging: akan dipanggil apabila anda mula menyeret
- scrollViewDidScroll: akan dipanggil setiap kali data berubah sedikit
- scrollViewWillEndDragging:withVelocity:targetContentOffset: akan dipanggil apabila jari keluar.

洪涛

Apabila jari anda tidak bergerak dan tidak meninggalkan ScrollView, ia tidak akan bertindak balas kepada mana-mana kaedah ScrollView.


Saya menyeret dan kemudian berhenti, tetapi jari saya tidak keluar.

Apabila scrollViewDidScroll tidak bertindak balas dan scrollViewDidEndDragging juga tidak bertindak balas, ini bermakna jari anda tidak menggelongsor tetapi masih berada pada ScrollView.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan