2013-03-04 2 views
2

오늘 "UIRefreshControl"을 사용하기 시작했고 이상한 것들을 발견했습니다.UIRefreshControl weirdness

InterfaceBuilder에서 UIRefreshControl을 만들고 와이어 링하면 모든 선택기가 호출되지 않습니다. IB는 컨트롤이 "value changed"메시지에서 실행되어야한다고 말하며 코드를 호출해야하지만 그렇지 않습니다.

그래서 Interface Builder에서이 작업을 포기하고 코드에서이 작업을 수행하기로 결정했습니다. 그리 많지는 않습니다. 그래서 루틴 내 "viewDidLoad에"내부에이 코드를 넣어 : 그것은 잘립니다하지만, 뷰가 처음 나타날 때 새로 고침 제어가 볼 수

self.refreshControl = [UIRefreshControl new]; 
[self.refreshControl addTarget:self action:@selector(doStuff:) forControlEvents:UIControlEventValueChanged]; 
NSMutableParagraphStyle* paragraphStyle = [NSMutableParagraphStyle new]; 
paragraphStyle.alignment = NSTextAlignmentCenter; 
self.refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@"Pull to refresh" attributes:@{NSParagraphStyleAttributeName : paragraphStyle}]; 

. 사용자가 실제로 테이블을 당길 때까지 표시되지 않는 것이 좋습니다. 웹 서비스를 호출하고 결과가 돌아올 때까지 기다린 다음 표를 채 웁니다. 그래서, 당신은 단지 두 번째 또는 두 번째 컨트롤을 참조하십시오. 하지만 이상하게 보입니다.

질문은 다음과 같습니다.
1. 인터페이스 작성기에서만 컨트롤을 연결할 수없는 알려진 버그입니까?
2.이 컨트롤을 사용자가 실제로보고 싶어 질 때까지 테이블 뷰 컨트롤러에 추가하는 방법이 있습니까?

답변

1

새로 고침 컨트롤을 추가하거나 viewController에서 선언 할 필요가 없습니다. 새로 고침 풀기 추가는 두 단계로 진행됩니다.
1 단계 : 스토리 보드에서 tableViewController로 이동 한 다음 "새로 고침"부분에서 "사용함"을 선택하십시오.
2 단계 :있는 viewDidLoad에, 당신의 tableViewController.m 파일에 다음 코드를 추가 : -refresh 방법으로 물건을 이외의 전체 프로세스를,의

[self.refreshControl addTarget:self 
          action:@selector(refresh) 
        forControlEvents:UIControlEventValueChanged]; 

합니다. 더 이상은 없습니다.

0

예, UIRefreshControl에 버그가있어 동작이 호출되지 않습니다. 새로 고침 방법 를 호출되지 않습니다 보인다

디버거 조사 : 키스 해리슨은 자신의 블로그 항목 UIRefreshControl Fun and Games이에 대해 이야기합니다. 어떤 이유로 든 스토리 보드가 이 UIRefreshControl을 우리 동작에 제대로 연결하지 못하거나 이 UIControlEventValueChanged 이벤트와 다른 이상한 상호 작용을한다고 가정 할 수 있습니다. Apple (rdar://14178445)과 함께 버그 보고서를 제출했지만 사용할 수있는 간단한 해결 방법이 있습니다.

해결 방법은 @AMayes에 설명되어 있습니다.

+1

내보기 컨트롤러에 "여유 크기"= 1000px가있을 때이 버그가있었습니다. 다시 고정으로 변경하면 새로 고침이 올바르게 작동하기 시작했습니다. 스토리 보드에서 "자유형 크기"를 제거하는 것은 – oyatek

+0

입니다. 감사! –