2011-01-10 3 views
0

내 UIAlertViews 중 하나에 작은 문제가 있습니다. 나는 그것을 보여주고, 몇 가지 일을하고, 자동적으로 해고하려고 노력하고있다.UIAlertView가 표시되지 않습니다.

callingTaxi = [[UIAlertView alloc] initWithTitle:@"" message:@"検索中" delegate:nil cancelButtonTitle:nil otherButtonTitles:nil, nil]; 
[callingTaxi show]; 
/* Do some tasks */ 
[callingTaxi dismissWithClickedButtonIndex:0 animated:YES]; 
[callingTaxi release]; 

는 그러나, UIAlertView는 절반 방법을 보여줍니다 이것은 내가 현재 사용하고 코드입니다. 배경이 어두워 보이지만 작업이 완료되면 경고보기가 빠르게 나타나고 사라집니다.

어떤 아이디어로이 문제를 해결할 수 있습니까?

는 벤

+0

같은 문제가있어 귀하의 솔루션을 상세히 설명 할 수 있습니까? 감사합니다. – Rasman

답변

3

이 쇼를 않습니다,하지만 당신은 아이폰 OS가 완전히 렌더링 할 시간이 없다

[callingTaxi dismissWithClickedButtonIndex:0 animated:YES]; 

으로, 대신에 뭔가를 사용자가 기다리는, 바로를 닫습니다. 어쨋든,이 방법은 dismissWithClickedButtonIndex를 사용하는 방법이 아닙니다. 여기서 무엇을 이루려고합니까?

편집 : UIAlertView에 대리인을 지정하고 대리자가 AlertView 내부에서 일어나는 일을 처리해야한다고 생각합니다.

당신이 alertview

- (void) alertView: (UIAlertView *) alertView didDismissWithButtonIndex:(NSInteger)buttonIndex{ 
// Do stuff 
// Or if you have multiple buttons, you could use a switch 

[callingTaxi release]; 

아니면 오토 릴리즈 수있는 방법을 만들어야합니다

+0

감사합니다. 내 문제가 해결되었습니다 :) – Ben

+0

"대리인이 AlertView 내부에서 일어나는 일을 처리"하는 것을 더 많이 설명 할 수 있습니까? – Rasman

+0

@Rasman : http://mobile.tutsplus.com/tutorials/iphone/uialertview/ UIAlertView에서 단추 클릭을 처리하기 위해 UIAlertViewDelegate를 만드는 방법 – fresskoma

1

하면, 그것을 표시 동일한 기능 내부 닫을 타이머를 닫거나 다른 이벤트에 반응으로서 안된다.

0

..

그러나 정답을 x3ro 주신 대신 사용자가 누를 때까지 기다리는 방법을 직접 호출 버튼 ...

1

위임자는 필요하지 않습니다. 문제는 백그라운드 스레드에서 수행해야하는 작업이므로 화면을 업데이트하기 위해 메인 스레드 만 홀로 남아 있어야한다는 것입니다. 당신이 블록과 파견 큐를 사용하도록 코드를 업데이트하는 경우

, 모든 작동합니다

callingTaxi = [[UIAlertView alloc] initWithTitle:@"" message:@"検索中" delegate:nil cancelButtonTitle:nil otherButtonTitles:nil, nil]; 
[callingTaxi show]; 
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, NULL), ^{ 
    /* Do some tasks */ 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     // this code is back on the main thread, where it's safe to mess with the GUI 
     [callingTaxi dismissWithClickedButtonIndex:0 animated:YES]; 
     [callingTaxi release]; 
    }); 
}); 
0

을 uialertview에 의해 기각 : [callingTaxi dismissWithClickedButtonIndex : 0 애니메이션 : YES]; 사용자가 읽을 수 있습니다.

최종 사용자는 얼마나 오랫동안 그것을 읽으려고합니까?

관련 문제