Show scrollbar in UITableView before the table is dragged down. In a Way, the UIScrollBar should always be visible

12,123

Solution 1

You can flash them but there isn't an option to make them always visible:

[ScrollView flashScrollIndicators];

UITableView is a subclass of UIScrollView,So you can use it directly with it

  - (void)viewDidAppear:(BOOL)animated {
      [super viewDidAppear:animated];
      [self.tableView performSelector:@selector(flashScrollIndicators) withObject:nil afterDelay:0];
}

Check out for more info : UIScrollView - showing the scroll bar

Swift:

override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(animated)
    self.tableView.flashScrollIndicators()   
}

Solution 2

Swift 3.0

1) Timer

var timerForShowScrollIndicator: Timer?

2) Methods

/// Show always scroll indicator in table view
func showScrollIndicatorsInContacts() {
    UIView.animate(withDuration: 0.001) {
        self.tableView.flashScrollIndicators()
    }
}

/// Start timer for always show scroll indicator in table view
func startTimerForShowScrollIndicator() {
    self.timerForShowScrollIndicator = Timer.scheduledTimer(timeInterval: 0.3, target: self, selector: #selector(self.showScrollIndicatorsInContacts), userInfo: nil, repeats: true)
}

/// Stop timer for always show scroll indicator in table view
func stopTimerForShowScrollIndicator() {
    self.timerForShowScrollIndicator?.invalidate()
    self.timerForShowScrollIndicator = nil
}

3) Use

startTimerForShowScrollIndicator in viewDidAppear

stopTimerForShowScrollIndicator in viewDidDisappear

Solution 3

    var timerForIndicatore:Timer?
           
    override func viewDidAppear(_ animated: Bool) {
                super.viewDidAppear(animated)
                
                showIndicator()
            }
            
         
       override func viewDidDisappear(_ animated: Bool) {
                super.viewDidDisappear(animated)
                
                deinitializeIndicator()
            }


 @objc func startContinuosShowingIndicator() {
        UIView.animate(withDuration: 0.0001) {
            self.deviceListTableView.flashScrollIndicators()
        }
    }

    func showIndicator() {
        self.timerForIndicatore = Timer.scheduledTimer(timeInterval: 0.3, target: self, selector: #selector(self.startContinuosShowingIndicator), userInfo: nil, repeats: true)
    }

    func deinitializeIndicator() {
        self.timerForIndicatore?.invalidate()
        self.timerForIndicatore = nil
    }
Share:
12,123
Shradha
Author by

Shradha

Pretty new to iOS Development, but im luvin it..!!

Updated on June 05, 2022

Comments

  • Shradha
    Shradha almost 2 years

    In a I am using several UITableView in my app. Some of them contain several rows, while some have two three only. What I need is: if the table contains several rows, then the scrollbar should be visible before the user even drags the table down. Or in another way, is it possible to make scrollbar visible always??