아이폰:는 방법을 확인 키 클릭 사운드에 대한 사용자 정의 키패드?

StackOverflow https://stackoverflow.com/questions/818515

  •  03-07-2019
  •  | 
  •  

문제

는 방법이 있을 프로그래밍 방식으로 키패드를 호출하"클릭"소리입니까?내 응용 프로그램은 사용자 지정 키패드(건축 UIButtons)고 싶을 제공하는 몇 가지 오디오 의견을 경우 사용자 탭에서 키를 사용합니다.했을 만드는 내 자신의 소리에서 제공하는"서명 검색"옵션이지만,행복하지 않았다 어떤 나의 창조물입니다.이 없는 경우에는 표준 방법을 호출하는 키 클릭,보의 라이브러리는 소리가 그러한 보석?

도움이 되었습니까?

해결책

내가 찾은 가장 간단한 방법은 iPhone 시뮬레이터에서 Tock.aiff (키보드 사운드)를 추출하여 앱으로 패키지 한 다음 사용하여 재생하는 것입니다. AudioServicesPlaySystemSound() 적절한 시간에. 내 컴퓨터에서 Tock.aiff를 스포트라이트로 입력하면 파일을 찾아 내면 파일을 찾아야한다면 Uikit.framework의 시뮬레이터 버전에 있습니다.

다른 팁

기본 키보드 사운드를 재생할 수있는 빠른 솔루션이 있습니다.

  1. Audiotoolbox.framework를 추가하십시오
  2. 소리가 재생하려는 곳마다 다음 줄을 추가하십시오.

    AudioServicesPlaySystemSound(0x450);

iOS 4.2 기준으로 UIView의 사용자 정의 서브 클래스에서 UiinputViewAudiofeedback 프로토콜을 채택하십시오. "inputView"를 보게 한 다음 적절한 시간에 "PlayInputClick"을 호출하십시오.

http://developer.apple.com/library/ios/#documentation/uikit/reference/uiinputviewaudiofeedback_protocolreference/reference/reference.html

사람들이 시간을 절약하기 위해. 이것을 사용자 정의보기에 넣으십시오.

- (BOOL) enableInputClicksWhenVisible {
    return YES;
}

클릭을하려면 다음을 수행합니다.

[[UIDevice currentDevice] playInputClick];

파일을 자신의 앱에 복사 할 필요가 없습니다. Uikit 프레임 워크에서 직접 가져올 수 있어야합니다.

CFURLRef soundFileURLRef = CFBundleCopyResourceURL(
    CFBundleGetBundleWithIdentifier(CFSTR("com.apple.UIKit")),
    CFSTR ("Tock"),CFSTR ("aiff"),NULL);

이것이 제가 asquared의 의견으로 만든 것입니다.

NSString *path = [[NSBundle bundleWithIdentifier:@"com.apple.UIKit"] pathForResource:@"Tock" ofType:@"aiff"];
SystemSoundID soundID;
AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:path], &soundID);
AudioServicesPlaySystemSound(soundID);
AudioServicesDisposeSystemSoundID(soundID);

0x450을 SystemsoundID로 사용하면 나에게 작동합니다 (올바른 볼륨에서 내장 된 Tock.aiff를 재생하는 것이 너무 시끄 럽습니다). 그것이 얼마나 휴대용인지는 모르겠습니다 - 이것은 iPod Touch 3 Gen에 있습니다.

여전히 진드기 온/오프에 대한 선호도를 존중하지 않습니다.

내가 한 일은 다음과 같습니다.

/developer/platforms/iphonesimulator.platform/developer/sdks/iphonesimulator4.2.sdk/system/library/frameworks/uikit.framework에서 'tock.aiff'를 찾으십시오

Xcode의 리소스 폴더로 드래그하여 '대상 그룹의 폴더에 항목을 복사'합니다.

avfoundation.framework를 Xcode의 Frameworks 폴더로 가져옵니다

수업 상단에서 avfoundation 가져 오기 :

#import <AVFoundation/AVAudioPlayer.h>

다음 기능을 사용하십시오.

- (void)PlayClick {
    NSURL* musicFile = [NSURL fileURLWithPath:[[NSBundle mainBundle] 
                                               pathForResource:@"Tock"
                                               ofType:@"aiff"]];
    AVAudioPlayer *click = [[AVAudioPlayer alloc] initWithContentsOfURL:musicFile error:nil];
    [click setVolume:0.15f];
    [click play];
}

그게 다야!

에서 무엇을 말할 수 있는,소리를 클릭을 사용할 수 없다.나는 아무것도 보지 못했에서 오디오 세션 서비스 관련이 있습니다. AudioServicesPlaySystemSound() 유망 보인다,하지만 나타나지 않는 모든 소리 시스템 ID 를 클릭 사운드(에 헤더를 설정할 수 있습 뭔가).당신은 항상 수 있는 루프 전화 AudioServicesPlaySystemSound(i) 면 아무것도니다.아이폰 소프트웨어는 이미지를 복원 아마 소리,하지만 그것은 아마 라이센스에 대한 일반적으로 사용합니다.탈옥이폰을 얻을에서는 맛있는 소리를 클릭할 필요가 없 언급했다.

For(creative commons)소리,체크 아웃 Freesound Project.

미래를 위해,아마도 요구하는 애플 노출 시스템에 소리가 아닌 다른 경고 소리와 함께 사용 AudioServicesPlaySystemSound().

어쩌면 조금 늦었을 수도 있습니다 ...하지만 Mrmage에서 마지막 게시물에서 AudioServicesDisposeSystemSoundID(soundID); 직접 AudioServicesPlaySystemSound(soundID);그런 다음 시스템 사운드를 작성한 직후에 시스템 사운드를 폐기 할 때 아무 소리가 들리지 않습니다.

먼저 재생을 끝내도록해야합니다.

사운드 객체를 즉시 처리 할 필요가 없습니다. 속성의 사운드 객체에 대한 포인터를 유지하고 재창조하기 전에 다른 소리를 재생하려고 할 때만 처리하십시오.

물론 마침내 Dealloc에서 SystemsoundID 객체를 처분합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top