문제

다소 기본적인 질문이 있습니다. 나는 몇 가지 (5) UIImageView 내 화면의 이미지. 버튼을 클릭하면 각 이미지를 다른 것으로 변경하고 싶습니다. 각 이미지가 변경되면 소리를 재생하고 싶습니다.

따라서 각 이미지가 변경됨에 따라 기본적으로 클릭 소리를 원합니다.

문제는 5 개의 이미지를 말하면 어떤 이유로 든
소리가 먼저 5 번 재생되고 이미지가 변경됩니다.

컨트롤이 입력을 위해 사용자에게 돌아갈 때 이미지 만 새로 고침되는 것과 같습니다.

어떤 이미지를 표시하자마자 이미지를 새로 고칠 수 있도록 어떻게 "강제"할 수 있습니까?

나는 iPhone/MacWorld를 처음 접 했으므로 쉽게 가십시오 :-)

약간 뒤틀리게 하다

도움이 되었습니까?

해결책

컨트롤이 입력을 위해 사용자에게 돌아갈 때 이미지 만 새로 고침되는 것과 같습니다.

그것이 바로 일어나는 일입니다. UI는 기본 스레드에서 업데이트되므로 코드가 실행되는 동안 업데이트가 발생하지 않습니다.

원하는 것을 달성하려면 타이머가 필요합니다. NSTIMER 문서를 살펴보십시오. 두 번째 이미지를 변경하는 메소드를 발사 한 다음 세 번째 이미지를 변경하려면 타이머를 요청하는 타이머를 만들어야합니다. 필요한 것과 같은 타이머를 만드는 편리한 방법이 있습니다. + (NSTimer *)timerWithTimeInterval:(NSTimeInterval)seconds target:(id)target selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)repeats

[NSTimer timerWithTimeInterval:1.0f target:self selector:@selector(updateImage2:) userInfo:nil repeats:NO];

그런 다음 방법이 있습니다.

- (void) updateImage2(NSTimer*)theTimer
{

     //Update image 2 here
     // play sound 2 here

    [NSTimer timerWithTimeInterval:1.0f target:self selector:@selector(updateImage3:) userInfo:nil repeats:NO];
}

updateImage3 : ;-) 메소드를 구현하기 위해 당신에게 맡길 게요.

이와 같은 업데이트를 실행하면 기본 스레드가 UI를 업데이트 할 수 있습니다.

다른 팁

uiimageview를 정기적으로 새로 고치는 방법을 찾고 있다면 다음을 참조 할 수 있습니다.http://www.shanison.com/2010/12/25/uiimageview-load-remote-image/

사운드를 비동기로 재생하면서 디스크 나 네트워크에서 이미지를로드하는 것처럼 들립니다. 아마도 당신이 사용하고있을 것입니다 AudioServicesPlaySystemSound 와 함께 UIImage +imageWithContentsOfURL:? 실제 이미지로드 및 사운드 재생 코드가 여기에서 가장 유용합니다.

이것은 uiimageview 배경을 변경하고 새로 고침하고 그 후 코드를 계속 실행하고 싶을 때 나에게 효과적이었습니다.

-(void)imgTapped_event:(UIImageView*)imgViewTapped
{
     imgViewTapped.backgroundColor=[UIColor whiteColor];

     //let the system update ui changes
     [NSRunLoop currentRunLoop]runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.0f]];

     //continue your code execution, play sounds etc...

     //my helper method to play sound
     [self playSound:@"goodAnswer" sync:YES loops:0]; 
 }
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top