2014-05-16 3 views
0

UI 스레드 내가 그것을 수행 할 경우,performSelector : withObject : afterDelay 블록 내가 작업을 수행 할

그러나 UI 스레드에서 (단추를 사용 가능한 상태로 설정) "지연 후"이 UI를 차단하는 것 스레드

-(void)changeButtonState:(UIButton *)btn{ 
    [btn setEnabled:NO]; 

    [self performSelector:@selector(reenableButton:) withObject:btn afterDelay:5]; 

} 

-(void)reenableButton:(UIButton*)btn{ 
    [btn setEnabled:YES]; 
} 

어떻게하면 메인 스레드를 차단하지 않고, 지연 후 선택을 수행 할 수 있으며, 내가해야 할 작업이 UI 스레드에서 수행해야합니다?

+0

performSelector : withObject : afterDelay :'현재 스레드를 차단하지 않습니다. 선택기를 호출 할 때까지 UI가 5 초 동안 차단되었다고 말씀 하시겠습니까? 그것은 전혀 일어나지 않아야합니다. – rmaddy

+0

화면에 2 개의 편집 텍스트가 있습니다. 첫 번째 편집 텍스트에서 일부 입력을 입력 한 후 단추를 클릭하면 비활성화됩니다. 두 번째 편집 텍스트를 클릭하여 이전에 값을 변경 할 수 없습니다. 버튼이 다시 활성화됩니다. 나는 그것을 작성 했으므로 어떤보기 (화면 편집, 단추 편집) 외부의 화면을 누르면 키보드가 숨겨지고 버튼이 비활성화되어있는 동안에는 나타나지 않습니다. –

답변

0

당신의 콘센트가 잘못 나온 것처럼 들립니다. 버튼 대신 기본보기로 콘센트를 만들었을 수도 있습니다. 모든 것이 불가능하고, 단지 버튼됩니다 왜 Incompatible pointer types sending 'UIView *' to parameter of type 'UIButton *'

이 설명합니다 :이 경우

는, 당신은이 같은 경고 무언가를 얻어야한다.