Потому что ваши .appendSpan()
возвращаются реагируют, но возвращаются в рамках события onClick.
Когда вы говорите <p>Are they both heroes? {appendSpan()}</p>
, вы фактически указываете приложению добавить интервал внутри тега <p>
...
Но onClick={appendSpan}
, где вы говорите, чтобы добавить? Вы не сказали, куда добавить. Так что он никогда не будет добавлен в дерево DOM
Для всех, у кого такая же проблема, перенаправьте ваш вывод на динамик:
[[AVAudioSession sharedInstance] setCategory:
AVAudioSessionCategoryPlayAndRecord error:NULL];
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty(kAudioSessionProperty_OverrideAudioRoute,
sizeof(audioRouteOverride), &audioRouteOverride);
Это работает.
Не забывайте об операторе import. Возможно, это очевидно для более опытных программистов...
#import <AudioToolbox/AudioServices.h>
Я столкнулся с этим сегодня, и большинство ответов, похоже, не относятся к последним изменениям iOS. Ответ Люциана, приведенный выше с параметром defaultToSpeaker, является правильным, хотя время от времени в симуляторе и на устройстве он все еще ведет себя по-разному. Для меня помогло установить категорию, режим и параметры в одном вызове, который доступен в iOS 10+ следующим образом:
try session.setCategory(AVAudioSessionCategoryPlayAndRecord, mode: AVAudioSessionModeDefault, options: .defaultToSpeaker)
Использование этого аудио было максимально возможным и оставалось таким же.
В моем случае в дополнение к использованию опции AVAudioSessionCategoryOptionDefaultToSpeaker мне пришлось убрать изменение режима audioSession с AVAudioSessionModeDefault на AVAudioSessionModeMeasurement.
Поэтому, если вы используете режимы, отличные от AVAudioSessionModeDefault, будьте осторожны.