2015-05-26 10 views
7

Tôi đã quyết định sử dụng UIScrollView thay vì UITableView trong ứng dụng của tôi vì nhiều lý do. Khi tôi đang sử dụng UITableView, tôi đã có thể thêm một UIRefreshControl mà không có vấn đề gì. Khi tôi sử dụng cùng một mã trên UIScrollView của tôi tuy nhiên, không có gì xảy ra. Tôi đã thử một số thư viện bồi dưỡng của bên thứ ba và không có thư viện nào hoạt động. Bất kỳ trợ giúp được đánh giá cao.UIRefreshControl được thêm vào UIScrollView không bao giờ được hiển thị

Nguồn:

var scroll: UIScrollView! 
var refreshControl: UIRefreshControl! 

override func viewDidLoad() 
{ 
    super.viewDidLoad() 

    self.scroll = UIScrollView(frame: self.view.frame) 
    self.scroll.contentSize = CGSize(width: self.view.bounds.width, height: 10) 

    self.refreshControl = UIRefreshControl() 
    self.refreshControl.attributedTitle = NSAttributedString(string: "Pull to refresh") 
    //self.refreshControl.addTarget(self, action: "loadPostsIntoCards", forControlEvents: UIControlEvents.ValueChanged) 
    self.scroll.addSubview(self.refreshControl) 

    self.view.addSubview(self.scroll) 

    //self.loadPostsIntoCards() 
} 

Phương pháp loadPostsIntoCards không gọi API của tôi, và tạo ra UIViews ("thẻ") được bổ sung vào UIScrollView. Sau đó tôi thay đổi contentSize của UIScrollView dựa trên tổng chiều cao của tất cả các thẻ. Các thẻ được thêm hoàn hảo và chế độ xem cuộn hoạt động như mong đợi, ngoại trừ liên quan đến UIRefreshControl.

Cảm ơn trước sự giúp đỡ nào!

Trả lời

12

EDIT:
Sau khi một số lừa xung quanh tôi tìm thấy một giải pháp mà sẽ cho phép scrollview để di chuyển (và kích hoạt sự kiểm soát refresh) ngay cả khi contentSize là nhỏ hơn so với chiều cao scrollview. Chỉ cần thiết lập thuộc tính alwaysBounceVertical true:

self.scroll.alwaysBounceVertical = true 

OLD ĐÁP:
kích thước nội dung của bạn nên được lớn hơn chiều cao của scrollview của bạn để làm cho công việc này. Thay đổi dòng này:

self.scroll.contentSize = CGSize(width: self.view.bounds.width, height: 10) 

Để:.

self.scroll.contentSize = CGSize(width: self.view.bounds.width, height: self.view.bounds.height+1) 

Điều đó sẽ cho phép RefreshControl của bạn để kick trong

Hoặc, trong trường hợp của bạn có lẽ bạn nên tính toán chiều cao của thẻ của bạn và sau đó đặt đó là chiều cao cho contentSize của bạn.

+0

Cài đặt luôn luônBounceVertical dường như không hoạt động với tôi:/ –

+1

Tôi vừa sao chép mã của bạn, luôn thêmBounceVertical và nó hoạt động ..:/ – donnywals

+0

bạn có thanh điều hướng không? Tôi nghĩ rằng đó có thể là nguyên nhân gây ra vấn đề của tôi. –

Các vấn đề liên quan