2014-02-25 1 views
11

자주 발생하지만 항상 그런 것은 아니지만 버그입니다. 내 UICollectionView에 새로 고침 컨트롤이 추가되었습니다. 새로 고침하면 완벽하게 작동합니다. 그러나 내가 절반 새로 고침 또는 완전히 새로 고치기, 응용 프로그램에서 다른 탭으로 이동 한 다음 다시 때 UIRefreshControl UICollectionView 부분 위에 나타납니다. 또한 0 새로 고침 회 전자 막대에서 시작하는 대신로드 된 모든 시작됩니다 (나는 Mail과 같은 다른 응용 프로그램에서이 사실을 알았으므로 많은 OS 버그가 있지만 OS 응용 프로그램에서는 회 전자가 넘어 가지 않습니다 내용). 다음은 문제의 이미지입니다. https://www.dropbox.com/s/4qk6qjrdlapsvz0/IMG_0074.JPG ViewDidLoad에서 RefreshController를 설정하는 방법은 다음과 같습니다.UIRefreshController가 UICollectionView를 넘습니다.

refreshControl = [[UIRefreshControl alloc] init]; 

[refreshControl addTarget:self action:@selector(refresh2) 

forControlEvents:UIControlEventValueChanged]; 

[self.collectionView addSubview:refreshControl]; 

self.collectionView.alwaysBounceVertical = YES; 

누구나 CollectionViewController 뒤에 회 전자를 만드는 방법을 알고 있습니까? 감사합니다

+0

그래, 들리는 군. 귀하의 코드가 올바르게 보입니다. –

+0

레이더를 제기했습니다. 희망은 고쳐지기를 바랍니다. – user1941966

답변

25

나는이 문제도 잘 알고 있었기 때문에 그것을 공유 할 것이라고 생각했습니다. 내가 한 일은 UICollectionView의 뒤쪽으로 가도록 강제하는 것입니다. sendSubViewToBack 및 UICollectionViewCell의 zIndex 설정과 같은 다른 작업을 시도했지만 작동하지 않았습니다. 그러나 아래 작업을했고, 나는 6+ iOS에서 테스트 :

refreshControl.layer.zPosition = -1; 

아이폰 OS 6의 경우,이 추가 :

refreshControl.userInteractionEnabled = NO; 
+0

주의! UIImageView 또는 무언가를 backgroundView로 사용하려면 imageView.layer.zPosition을 -2 이하로 설정해야합니다. 이 작업을 수행하지 않으면 refreshControl이 backgroundView 아래에 숨겨집니다. – smartDonkey

1

문제 : 당신은 UIRefreshControl을 표시 부분 아래로 스크롤을 시작 하지만, 회전을 시작하기 위해 줄곧 스크롤하지 마십시오. 다른보기 (또는 "최소화"응용 프로그램, 배경으로 보내기)로 이동 한 다음 돌아올 수 있습니다. 조금 스크롤하면 UIRefreshControl이 완전히로드되고, 반갑지 않으며 회전하지 않는 콜렉션 뷰 위에 표시됩니다.

솔루션 : 당신은 viewWillDissappear와 응용 프로그램에 endRefreshing 필요 이 배경에 전송된다.

var refreshControl = UIRefreshControl() 

override func viewDidLoad() { 
    super.viewDidLoad() 
    refreshControl.addTarget(self, action: #selector(ViewController.methodNameForRefreshing), forControlEvents: .ValueChanged) 
    collectionView.addSubview(refreshControl) 
    //or 
    tableView.addSubview(refreshControl) 

    NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(ViewController.willResignActiveNotif), name: UIApplicationWillResignActiveNotification, object: nil) 
} 

override func viewWillDisappear(animated: Bool) { 
    super.viewWillDisappear(animated) 
    refreshControl.endRefreshing() 
} 

func willResignActiveNotif(notification: NSNotification) { 
    refreshControl.endRefreshing() 
} 
관련 문제