যখন কোনও ইউআইএসক্রোলভিউ স্ক্রোলিং শেষ করে কীভাবে সনাক্ত করবেন


145

ইউআইএসক্রোলভিউডেলিগেট দুটি প্রতিনিধি পদ্ধতি পেয়েছে scrollViewDidScroll:এবং scrollViewDidEndScrollingAnimation:যখন এগুলি স্ক্রোলিংটি সম্পূর্ণ হবে তখন সেগুলির কোনওটিই আপনাকে জানায় না।scrollViewDidScrollকেবলমাত্র আপনাকে সূচিত করে যে স্ক্রোল ভিউ স্ক্রোল করে না যে এটি স্ক্রোলিং শেষ করেছে।

অন্য পদ্ধতি scrollViewDidEndScrollingAnimationআপনি যদি প্রোগ্রামক্রমে স্ক্রোল ভিউটি ব্যবহারকারীর স্ক্রল করে না তবে কেবল আগুনে ছড়িয়েছে বলে মনে হচ্ছে।

যখন কোনও স্ক্রোল ভিউ স্ক্রোলিং সম্পন্ন হয়েছে তখন সনাক্ত করতে স্কিম সম্পর্কে কেউ কি জানেন?


এছাড়াও দেখুন, আপনি যদি প্রোগ্রামক্রমে স্ক্রোলিংয়ের পরে সমাপ্ত স্ক্রোলিং সনাক্ত করতে চান: স্ট্যাকওভারফ্লো
ট্রেভর

উত্তর:


157
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
    [self stoppedScrolling];
}

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
    if (!decelerate) {
        [self stoppedScrolling];
    }
}

- (void)stoppedScrolling {
    // ...
}

13
দেখে মনে হচ্ছে এটি কেবলমাত্র কাজ করে যদি এটি হতাশাজনক হয়। আপনি যদি ধীরে ধীরে প্যান করেন, তবে ছেড়ে দিন, এটি ডেইডএন্ডডিলারেটরিং বলে না।
শন ক্লার্ক হেস

4
যদিও এটি অফিশিয়াল এপিআই। এটি বাস্তবে আমাদের প্রত্যাশা মতো কাজ করে না। @ অ্যাশলে স্মার্ট আরও কার্যকর সমাধান দিয়েছে।
ডি উ

নিখুঁতভাবে কাজ করে এবং ব্যাখ্যাটি বোঝায়
স্টিভেন এলিয়ট

এটি কেবল স্ক্রোলের জন্য কাজ করে যা মিথস্ক্রিয়া টেনে আনার কারণে। যদি আপনার স্ক্রোলটি অন্য কোনও কারণে (যেমন কীবোর্ড খোলার বা কীবোর্ড বন্ধ হওয়ার কারণে) হয়ে থাকে, মনে হচ্ছে আপনাকে হ্যাক দিয়ে ইভেন্টটি সনাক্ত করতে হবে এবং স্ক্রোলভিউডিডএন্ডস্ক্রোলিংএনিমেশনটিও কার্যকর নয়।
অরেলিন পোর্টে

176

320 বাস্তবায়নের এত ভাল হয় - এখানে একটি প্যাচ স্ক্রল এর সামঞ্জস্যপূর্ণ শুরু / শেষ পেতে হয়।

-(void)scrollViewDidScroll:(UIScrollView *)sender 
{   
[NSObject cancelPreviousPerformRequestsWithTarget:self];
    //ensure that the end of scroll is fired.
    [self performSelector:@selector(scrollViewDidEndScrollingAnimation:) withObject:sender afterDelay:0.3]; 

...
}

-(void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView
{
    [NSObject cancelPreviousPerformRequestsWithTarget:self];
...
}

আমার স্ক্রোল সমস্যার জন্য এসও-তে একমাত্র দরকারী উত্তর। ধন্যবাদ!
দি উ

4
[0.3: @selector (scrollViewDidEndScrollingAnimation :) withObject: প্রেরক afterDelay স্ব performSelector] হওয়া উচিত
Brainware

1
2015 সালে, এটি এখনও সেরা সমাধান।
lukas

2
আমি সত্যই বিশ্বাস করতে পারি না আমি ফেব্রুয়ারী 2016, আইওএস 9.3 এ আছি এবং এটি এখনও এই সমস্যার সেরা সমাধান। ধন্যবাদ, একটি
মোহন

1
তুমি আমাকে বাঁচালে. সব থেকে ভালো সমাধান.
বরণ এমরে

21

আমি মনে করি যে আপনি চান স্ক্রোলভিউডিডএন্ডডিলিটারিটিং। এটির ইউআইএসক্রোলভিউ optionচ্ছিক পদ্ধতিটি উপস্থাপন করে:

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

প্রতিনিধিটিকে বলে যে স্ক্রোল দর্শনটি স্ক্রোলিং আন্দোলনকে হ্রাস করে শেষ করেছে।

ইউআইএসক্রোলভিউডেলিগেট ডকুমেন্টেশন


এর, আমিও একই উত্তর দিয়েছি। :)
সুवेश প্রতাপা

ডোহ। কিছুটা ক্রিপ্টিক্যালি নাম দেওয়া হয়েছে তবে এটি ঠিক যা আমি খুঁজছিলাম। ডকুমেন্টেশন ভাল পড়া উচিত ছিল। অনেক দিন
মাইকেল গাইলর্ড

এই ওয়ান লাইনারটি আমার সমস্যার সমাধান করেছে। আমার জন্য দ্রুত সমাধান! ধন্যবাদ.
ডডি রছমত উইকাকসনো

20

মিথস্ক্রিয়াগুলি টেনে আনার সাথে সম্পর্কিত সমস্ত স্ক্রোলগুলির জন্য, এটি যথেষ্ট হবে:

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
    _isScrolling = NO;
}

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
    if (!decelerate) {
        _isScrolling = NO;
    }
}

এখন, যদি আপনার স্ক্রোলটি কোনও প্রোগ্রামেটিক সেট কনট্যান্টঅফসেট / স্ক্রোলআরেক্টভিজিবল ( animated= ইয়েসের সাথে বা আপনি স্পষ্টতই জানেন যে কখন স্ক্রোলটি সমাপ্ত হবে)

 - (void)scrollViewDidEndScrollingAnimation {
     _isScrolling = NO;
}

যদি আপনার স্ক্রোলটি অন্য কোনও কারণে (যেমন কীবোর্ড খোলার বা কীবোর্ড বন্ধ হওয়ার কারণে) হয়ে থাকে, মনে হচ্ছে আপনাকে হ্যাক দিয়ে ইভেন্টটি সনাক্ত করতে হবে কারণ এটিও scrollViewDidEndScrollingAnimationকার্যকর নয়।

একটি প্যাগিনেটেড স্ক্রোল দর্শনটির ক্ষেত্রে :

কারণ, আমার ধারণা, অ্যাপল একটি ত্বরণ বক্ররেখার প্রয়োগ scrollViewDidEndDeceleratingকরে , প্রতিটি টেনে আনার জন্য ডাকা হয় যাতে scrollViewDidEndDraggingএই ক্ষেত্রে ব্যবহার করার দরকার নেই ।


আপনার পৃষ্ঠাযুক্ত স্ক্রোল ভিউয়ের ক্ষেত্রে একটি সমস্যা রয়েছে: আপনি যদি পৃষ্ঠার শেষ অবস্থানে (যখন কোনও স্ক্রোলের প্রয়োজন হয় না) ঠিক ঠিক স্ক্রলিং ছেড়ে দেন তবে কল করা scrollViewDidEndDeceleratingহবে না
শ্যাডো

19

এটি অন্যান্য কয়েকটি উত্তরে বর্ণিত হয়েছে, তবে এখানে (কোডে) কীভাবে একত্রিত করতে হবে scrollViewDidEndDeceleratingএবং scrollViewDidEndDragging:willDecelerateস্ক্রোলিং শেষ হয়ে গেলে কিছু পরিচালনা করতে হবে:

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
    [self stoppedScrolling];
}

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView 
                  willDecelerate:(BOOL)decelerate
{
    if (!decelerate) {
        [self stoppedScrolling];
    }
}

- (void)stoppedScrolling
{
    // done, do whatever
}

7

আমি কেবল এই প্রশ্নটি পেয়েছি, যা আমি জিজ্ঞাসা করা ঠিক একইরকম: যখন কোনও ইউআইএসক্রোলভিউয়ের স্ক্রোলিং বন্ধ হয়ে গেছে ঠিক কীভাবে জানব?

যদিও স্কেলিংয়ের সময় didEndDecelerating কাজ করে, স্থির মুক্তির সাথে প্যানিং নিবন্ধন করে না।

অবশেষে আমি একটি সমাধান খুঁজে পেয়েছি। didEndDragging এর একটি প্যারামিটার উইলডিসিলারেট রয়েছে যা স্টেশন রিলিজ পরিস্থিতিতে মিথ্যা।

ডিডএন্ডড্রেসিং-এ ডিলেড্রেইগিংয়ে ডিলেড্রেটিংয়ের সাথে মিলিত হয়ে অনুসন্ধান করে আপনি দুটি পরিস্থিতিই স্ক্রোলিংয়ের সমাপ্তি হিসাবে পাবেন।


5

আপনি যদি আরএক্সে থাকেন তবে আপনি ইউআইএসক্রোলভিউ এর মতো প্রসারিত করতে পারেন:

import RxSwift
import RxCocoa

extension Reactive where Base: UIScrollView {
    public var didEndScrolling: ControlEvent<Void> {
        let source = Observable
            .merge([base.rx.didEndDragging.map { !$0 },
                    base.rx.didEndDecelerating.mapTo(true)])
            .filter { $0 }
            .mapTo(())
        return ControlEvent(events: source)
    }
}

যা আপনাকে ঠিক এটি করতে অনুমতি দেয়:

scrollView.rx.didEndScrolling.subscribe(onNext: {
    // Do what needs to be done here
})

এটি টানা এবং হ্রাস উভয়ই বিবেচনায় নেবে।


আমি ঠিক এটিই খুঁজছিলাম। ধন্যবাদ!
মনোনীত

4
func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
    scrollingFinished(scrollView: scrollView)
}

func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
    if decelerate {
        //didEndDecelerating will be called for sure
        return
    }
    else {
        scrollingFinished(scrollView: scrollView)
    }
}

func scrollingFinished(scrollView: UIScrollView) {
   // Your code
}

3

আমি অ্যাশলে স্মার্ট এর উত্তর চেষ্টা করেছি এবং এটি একটি মোহন মত কাজ করে। কেবলমাত্র স্ক্রোলভিউডিডসক্রোল ব্যবহার করে এখানে অন্য ধারণা

-(void)scrollViewDidScroll:(UIScrollView *)sender 
{   
    if(self.scrollView_Result.contentOffset.x == self.scrollView_Result.frame.size.width)       {
    // You have reached page 1
    }
}

আমার সবেমাত্র দুটি পৃষ্ঠা ছিল তাই এটি আমার জন্য কাজ করেছিল worked তবে, যদি আপনার একাধিক পৃষ্ঠা থাকে তবে এটি সমস্যাযুক্ত হতে পারে (বর্তমান অফসেটটি প্রস্থের একাধিক কিনা তা আপনি জানতে পারেন তবে ব্যবহারকারী ২ য় পৃষ্ঠায় থামলেন বা তৃতীয় বা তার পথে চলছে কিনা তা আপনি জানতে পারবেন না) আরো)


3

গৃহীত উত্তরের দ্রুততম সংস্করণ:

func scrollViewDidScroll(scrollView: UIScrollView) {
     // example code
}
func scrollViewDidEndDragging(scrollView: UIScrollView, willDecelerate decelerate: Bool) {
        // example code
}
func scrollViewDidEndZooming(scrollView: UIScrollView, withView view: UIView!, atScale scale: CGFloat) {
      // example code
}

3

কারও যদি প্রয়োজন হয় তবে এখানে সুইফটে অ্যাশলে স্মার্ট উত্তর

func scrollViewDidScroll(_ scrollView: UIScrollView) {
        NSObject.cancelPreviousPerformRequests(withTarget: self)
        perform(#selector(UIScrollViewDelegate.scrollViewDidEndScrollingAnimation), with: nil, afterDelay: 0.3)
    ...
}

func scrollViewDidEndScrollingAnimation(_ scrollView: UIScrollView) {
        NSObject.cancelPreviousPerformRequests(withTarget: self)
    ...
}

2

সমাপ্ত অ্যাপ-ওয়াইডে স্ক্রোল করার সময় সনাক্ত করার জন্য সবেমাত্র সমাধান তৈরি করা হয়েছে: https://gist.github.com/k06a/731654e3168277fb1fd0e64abc7d899e

এটি রানলুপ মোডগুলির পরিবর্তনগুলি ট্র্যাক করার ধারণার ভিত্তিতে। এবং স্ক্রোল করার পরে কমপক্ষে 0.2 সেকেন্ড পরে ব্লকগুলি সম্পাদন করুন।

এটি রানওলুপ মোডগুলি iOS10 + পরিবর্তনগুলি ট্র্যাক করার জন্য মূল ধারণা:

- (void)tick {
    [[NSRunLoop mainRunLoop] performInModes:@[ UITrackingRunLoopMode ] block:^{
        [self tock];
    }];
}

- (void)tock {
    self.runLoopModeWasUITrackingAgain = YES;
    [[NSRunLoop mainRunLoop] performInModes:@[ NSDefaultRunLoopMode ] block:^{
        [self tick];
    }];
}

এবং আইওএস 2 + এর মতো কম স্থাপনার লক্ষ্যমাত্রার সমাধান:

- (void)tick {
    [[NSRunLoop mainRunLoop] performSelector:@selector(tock) target:self argument:nil order:0 modes:@[ UITrackingRunLoopMode ]];
}

- (void)tock {
    self.runLoopModeWasUITrackingAgain = YES;
    [[NSRunLoop mainRunLoop] performSelector:@selector(tick) target:self argument:nil order:0 modes:@[ NSDefaultRunLoopMode ]];
}

লোল অ্যাপ-ওয়াইড স্ক্রোল সনাক্তকরণ - যেমন অ্যাপ্লিকেশনটির কোনও ইউআইএসক্রোলভিউ যদি বর্তমানে স্ক্রল করছে ... একরকম অকেজো বলে মনে হচ্ছে ...
আইজ্যাক ক্যারল ওয়েজবার্গ

@ ইসাক্যাকারোলওয়েজবার্গ যখন আপনি মসৃণ স্ক্রোলিংটি মসৃণ রাখতে শেষ করেন তখন পর্যন্ত আপনি ভারী অপারেশনগুলিতে বিলম্ব করতে পারেন।
k06a

ভারী অপারেশনগুলি, আপনি বলছেন ... আমি যেগুলি বিশ্বব্যাপী সমবর্তী প্রেরণের কাতারে চালিয়ে যাচ্ছি সম্ভবত
আইজাক ক্যারল ওয়েজবার্গ

1

পুনরুদ্ধার করতে (এবং newbies জন্য)। এটি এতটা বেদনাদায়ক নয়। কেবল প্রোটোকল যুক্ত করুন, তারপরে সনাক্তকরণের জন্য আপনার প্রয়োজনীয় ফাংশনগুলি যুক্ত করুন।

ইউআইএসক্রোলভিউ রয়েছে এমন ভিউতে (শ্রেণি), প্রোটোকল যুক্ত করুন, তারপরে এখান থেকে আপনার ভিউতে (শ্রেণি) কোনও ফাংশন যুক্ত করুন।

// --------------------------------
// In the "h" file:
// --------------------------------
@interface myViewClass : UIViewController  <UIScrollViewDelegate> // <-- Adding the protocol here

// Scroll view
@property (nonatomic, retain) UIScrollView *myScrollView;
@property (nonatomic, assign) BOOL isScrolling;

// Protocol functions
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView;
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView;


// --------------------------------
// In the "m" file:
// --------------------------------
@implementation BlockerViewController

- (void)viewDidLoad {
    CGRect scrollRect = self.view.frame; // Same size as this view
    self.myScrollView = [[UIScrollView alloc] initWithFrame:scrollRect];
    self.myScrollView.delegate = self;
    self.myScrollView.contentSize = CGSizeMake(scrollRect.size.width, scrollRect.size.height);
    self.myScrollView.contentInset = UIEdgeInsetsMake(0.0,22.0,0.0,22.0);
    // Allow dragging button to display outside the boundaries
    self.myScrollView.clipsToBounds = NO;
    // Prevent buttons from activating scroller:
    self.myScrollView.canCancelContentTouches = NO;
    self.myScrollView.delaysContentTouches = NO;
    [self.myScrollView setBackgroundColor:[UIColor darkGrayColor]];
    [self.view addSubview:self.myScrollView];

    // Add stuff to scrollview
    UIImage *myImage = [UIImage imageNamed:@"foo.png"];
    [self.myScrollView addSubview:myImage];
}

// Protocol functions
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
    NSLog(@"start drag");
    _isScrolling = YES;
}

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
    NSLog(@"end decel");
    _isScrolling = NO;
}

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
    NSLog(@"end dragging");
    if (!decelerate) {
       _isScrolling = NO;
    }
}

// All of the available functions are here:
// https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIScrollViewDelegate_Protocol/Reference/UIScrollViewDelegate.html

1

আমার কাছে ক্রিয়াগুলি ট্যাপিং এবং টেনে আনার একটি মামলা রয়েছে এবং আমি জানতে পেরেছিলাম যে টেনে আনতে স্ক্রোলভিউডিডএন্ডডিজিট্রেটিং কল হচ্ছে

এবং পরিবর্তনটি কোড সহ ম্যানুয়ালি অফসেটে ([_scrolView setContentOffset: ContentOffset অ্যানিমেটেড: YES];) কল করছে স্ক্রোলভিউডিডএন্ডস্রোলিংএনিমেশন।

//This delegate method is called when the dragging scrolling happens, but no when the     tapping
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
    //do whatever you want to happen when the scroll is done
}

//This delegate method is called when the tapping scrolling happens, but no when the  dragging
-(void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView
{
     //do whatever you want to happen when the scroll is done
}

1

বিকল্প হিসাবে ব্যবহার করা হবে scrollViewWillEndDragging:withVelocity:targetContentOffsetযা বলা হয় যখনই ব্যবহারকারী আঙুল তুলে এবং লক্ষ্যবস্তুতে অফসেট থাকে যেখানে স্ক্রোলটি থামবে। এই সামগ্রীটি অফসেটে ব্যবহার করে scrollViewDidScroll:সঠিকভাবে শনাক্ত করে যখন স্ক্রোল ভিউ স্ক্রোলিং বন্ধ করে দিয়েছে।

private var targetY: CGFloat?
public func scrollViewWillEndDragging(_ scrollView: UIScrollView,
                                      withVelocity velocity: CGPoint,
                                      targetContentOffset: UnsafeMutablePointer<CGPoint>) {
       targetY = targetContentOffset.pointee.y
}
public func scrollViewDidScroll(_ scrollView: UIScrollView) {
    if (scrollView.contentOffset.y == targetY) {
        print("finished scrolling")
    }

0

ইউআইএসক্রোলভিউয়ের একটি প্রতিনিধি পদ্ধতি রয়েছে

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

প্রতিনিধি পদ্ধতিতে কোডের নীচের লাইনগুলি যুক্ত করুন

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
CGSize scrollview_content=scrollView.contentSize;
CGPoint scrollview_offset=scrollView.contentOffset;
CGFloat size=scrollview_content.width;
CGFloat x=scrollview_offset.x;
if ((size-self.view.frame.size.width)==x) {
    //You have reached last page
}
}

0

UIScrollViewDelegateস্ক্রোলিংটি সত্যিই শেষ হয়ে গেলে সনাক্ত করার জন্য (বা 'পূর্বাভাস' বলাই ভাল) এর জন্য একটি পদ্ধতি রয়েছে :

func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>)

এর UIScrollViewDelegate যা সনাক্ত করতে (অথবা বলতে 'ভবিষ্যদ্বাণী করা' ভালো) যখন স্ক্রলিং সত্যিই সমাপ্ত হয়েছে ব্যবহার করা যাবে।

আমার ক্ষেত্রে আমি এটি নীচে হিসাবে অনুভূমিক স্ক্রোলিং সহ ব্যবহার করেছি ( 3 সুইফটে ):

func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
    perform(#selector(self.actionOnFinishedScrolling), with: nil, afterDelay: Double(velocity.x))
}
func actionOnFinishedScrolling() {
    print("scrolling is finished")
    // do what you need
}

0

অ্যাশলে স্মার্ট যুক্তি ব্যবহার করে এবং সুইফট ৪.০ এবং তারপরে রূপান্তরিত হচ্ছে।

    func scrollViewDidScroll(_ scrollView: UIScrollView) {
         NSObject.cancelPreviousPerformRequests(withTarget: self)
        perform(#selector(UIScrollViewDelegate.scrollViewDidEndScrollingAnimation(_:)), with: scrollView, afterDelay: 0.3)
    }

    func scrollViewDidEndScrollingAnimation(_ scrollView: UIScrollView) {
        NSObject.cancelPreviousPerformRequests(withTarget: self)
    }

উপরের যুক্তি সমস্যাগুলি সমাধান করে যেমন ব্যবহারকারী কখন সারণীদর্শনটি থেকে স্ক্রোল করে চলেছে। যুক্তি ব্যতীত, আপনি যখন টেবিলভিউটি সরিয়ে ফেলবেন তখন কল করা didEndহবে তবে এটি কোনও কিছুই কার্যকর করবে না। বর্তমানে এটি ২০২০ সালে ব্যবহার করছে।


0

কিছু পূর্ববর্তী আইওএস সংস্করণে (যেমন আইওএস 9, 10), scrollViewDidEndDecelerating যদি স্ক্রোলভিউটি স্পর্শ করে হঠাৎ বন্ধ হয়ে যায় তবে ট্রিগার করা হবে না।

তবে বর্তমান সংস্করণে (আইওএস ১৩) scrollViewDidEndDeceleratingনিশ্চিতভাবে ট্রিগার করা হবে (যতদূর আমি জানি)।

সুতরাং, যদি আপনার অ্যাপ্লিকেশনটিকে পূর্বের সংস্করণগুলিকেও লক্ষ্য করে তোলা হয়, আপনার অ্যাশলে স্মার্ট দ্বারা উল্লিখিত সংস্করণের মতো একটি কাজের প্রয়োজন হতে পারে বা আপনি নিম্নলিখিতটি পেতে পারেন।


    func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
        if !scrollView.isTracking, !scrollView.isDragging, !scrollView.isDecelerating { // 1
            scrollViewDidEndScrolling(scrollView)
        }
    }

    func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
        if !decelerate, scrollView.isTracking, !scrollView.isDragging, !scrollView.isDecelerating { // 2
            scrollViewDidEndScrolling(scrollView)
        }
    }

    func scrollViewDidEndScrolling(_ scrollView: UIScrollView) {
        // Do something here
    }

ব্যাখ্যা

ইউআইএসক্রোলভিউ তিনটি উপায়ে থামানো হবে:
- দ্রুত স্ক্রোল করে নিজেই থামিয়ে দেওয়া
- দ্রুত স্ক্রোল করে আঙুলের স্পর্শের মাধ্যমে থামিয়ে দেওয়া (জরুরী ব্রেকের মতো)
- আস্তে আস্তে স্ক্রোল করা এবং থামানো

প্রথমটি সনাক্ত করতে পারে scrollViewDidEndDeceleratingএবং অন্যান্য অনুরূপ পদ্ধতিগুলি যখন অন্য দুটি করতে পারে না।

ভাগ্যক্রমে, UIScrollViewতাদের চিহ্নিত করার জন্য আমরা তিনটি স্ট্যাটাস ব্যবহার করতে পারি, যা "// 1" এবং "// 2" দ্বারা মন্তব্য করা দুটি লাইনে ব্যবহৃত হয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.