Frage

Gibt es eine Möglichkeit, um programmatisch über die Tastatur „auf“ klingen aufrufen? Meine App hat eine eigene Tastatur (aus UIButtons gebaut) und ich möchte einige Audio-Feedback geben, wenn der Benutzer auf den Tasten tippt. Ich habe versucht, meine eigenen Sounds in Garageband zu schaffen, war aber mit keinem meiner Kreationen nicht glücklich. Wenn es keine Standardmethode ist der Klick aufzurufen, kann mir jemand deuten auf eine Bibliothek von Klängen, die ein solches Juwel haben könnte?

War es hilfreich?

Lösung

Der einfachste Weg, die ich gefunden habe ist Tock.aiff (der Keyboard-Sound) aus dem iPhone Simulator zu extrahieren und sie mit Ihrem App-Paket, dann spielen sie AudioServicesPlaySystemSound() zu gegebener Zeit verwendet wird. Auf meinem Rechner einfach Tock.aiff in Spotlight Eingabe schaltet sich die Datei, aber wenn Sie es gehen sucht, ist es im Simulator Version von UIKit.framework.

Andere Tipps

Es ist eine wirklich schnelle Lösung, um den Standard-Tastatur-Sound zu spielen:

  1. Fügen Sie AudioToolbox.framework
  2. Fügen Sie die folgende Zeile ein, wo Sie den Klang spielen möchten:

    AudioServicesPlaySystemSound(0x450);

Wie von iOS 4.2, nehmen die UIInputViewAudioFeedback Protokoll auf einer benutzerdefinierten Unterklasse von UIView. Machen Sie diese sehen Sie Ihre „inputView“ und rufen Sie dann „playInputClick“ zu gegebener Zeit.

http://developer.apple.com/library/ ios / # Dokumentation / UIKit / reference / UIInputViewAudioFeedback_ProtocolReference / Reference / reference.html

Nur einige Menschen Zeit zu sparen. Setzen Sie diese in Ihrer benutzerdefinierten Ansicht:

- (BOOL) enableInputClicksWhenVisible {
    return YES;
}

Um den Klick zu machen dies zu tun:

[[UIDevice currentDevice] playInputClick];

keine Notwendigkeit, die Datei in Ihre eigene App zu kopieren - Sie sollten in der Lage sein, es aus dem UIKit Rahmen direkt zu bekommen:

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

Das ist, was ich daraus gemacht aus aSquared Kommentar:

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

Mit 0x450 als die SystemSoundID funktioniert für mich (und in der richtigen Lautstärke - nur die Tock.aiff eingebaute spielen war zu laut). Keine Ahnung, wie tragbare das ist -. Dies ist auf einem iPod touch 3. Generation

Noch nicht respektiert die Präferenz für tick ein / aus.

Hier ist, was ich getan habe:

Wir liegen 'Tock.aiff' in: /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.2.sdk/System/Library/Frameworks/UIKit.framework

Ziehen Sie es in Ihrem Ordner Ressourcen in xCode, ‚Copy Artikel in Zielgruppe des Ordners‘

tickt

Import AVFoundation.framework in den Frameworks Ordner in xCode

Import AVFoundation an der Spitze der Klasse:

#import <AVFoundation/AVAudioPlayer.h>

Verwenden Sie die folgende Funktion:

- (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];
}

Das ist es!

Von dem, was ich sagen kann, ist die Klick-Sound-Anwendungen nicht zur Verfügung. Ich habe nichts in Audio-Sitzungsdienste gesehen, die relevant ist. AudioServicesPlaySystemSound() sieht vielversprechend aus, aber es scheint kein System Sound-ID für den Klick-Sound zu sein (ein genauerer Blick auf den Header etwas aufdrehen kann). Man könnte immer Schleife über einen Aufruf von AudioServicesPlaySystemSound(i) und sehen, ob etwas spielt. Die iPhone-Software wiederherstellen Bilder wahrscheinlich den Klang haben, aber es ist wahrscheinlich nicht für den allgemeinen Gebrauch lizenziert. ein iPhone Jailbreak am leckeren Knackgeräusch zu erhalten braucht nicht erwähnt zu werden.

(creative commons) klingt Besuche die Free Projekt .

Für die Zukunft verlangt vielleicht, dass Apple aussetzen System klingt anders als die Warnton für die Verwendung mit AudioServicesPlaySystemSound().

Vielleicht ein bisschen spät ... Aber in MrMage letzten Beitrag, wenn Sie das tun AudioServicesDisposeSystemSoundID(soundID); gerade nach AudioServicesPlaySystemSound(soundID); dann werden Sie nichts hören, wie Sie das System Sound direkt nach dem Erstellen sie verwerfen sind.

Sie müssen es spielen lassen als Erster durchs Ziel .. Nur AudioServicesDisposeSystemSoundID rufen Sie den Ton abzubrechen, bevor es fertig ist

Sie müssen nicht sofort das Klangobjekts verfügen. Halten Sie einen Zeiger auf das Soundobjekt in einer Eigenschaft, und entsorgen Sie es nur, wenn Sie im Begriff sind, einen anderen Ton zu spielen, bevor neu zu erstellen.

Und natürlich schließlich entsorgen Sie das SystemSoundID Objekt in dealloc.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top