简体   繁体   中英

Swift UIRefreshControl not working on iPhone 8

I have an UIRefreshControl which works on every device except iPhone 8 (works neither on a physical device or an emulator).

On an iPhone 8 the refresh indicator stops at 3/4 to the end and never calls refresh

This is how it looks like when you pull it all the way down:

在此处输入图片说明

Creating the refresh control:

lazy var refreshControl: UIRefreshControl = {
    let refreshControl = UIRefreshControl()
    refreshControl.addTarget(self, action:
        #selector(TeamViewController.handleRefresh(_:)),
                             for: UIControlEvents.valueChanged)
    refreshControl.tintColor = UIColor.red

    return refreshControl
}()

Adding to the view:

if #available(iOS 10.0, *) {
    myCollectionView.refreshControl = refreshControl
} else {
    myCollectionView.addSubview(refreshControl)
}

I had the same problem and was caused by me setting the view controller to freeform in the storyboard as the simulated size. Changing it back to fixed resolved the issue.

Can also be fixed by using:

override func viewDidLayoutSubviews() { refreshControl?.didMoveToSuperview() super.viewDidLayoutSubviews() }

UIRefreshControl needs to be pulled down too far

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM