Notice
Recent Posts
Recent Comments
Link
투케이2K
246. (ios/swift) AVSpeechSynthesisVoice 사용해 음성 지원 언어 목록 확인 및 UIAlertController 팝업창 리스트 표시 본문
IOS
246. (ios/swift) AVSpeechSynthesisVoice 사용해 음성 지원 언어 목록 확인 및 UIAlertController 팝업창 리스트 표시
투케이2K 2022. 11. 5. 14:48[개발 환경 설정]
개발 툴 : XCODE
개발 언어 : SWIFT
[소스 코드]
// MARK: - [테스트 메인 함수 정의 실시]
func testMain() {
print("")
print("====================================")
print("[\(self.ACTIVITY_NAME) >> testMain() :: 테스트 함수 시작 실시]")
print("====================================")
print("")
// [비동기 처리 수행]
DispatchQueue.main.async {
// [배열 선언 실시 및 딕셔너리 선언]
var speechArray : Array<Dictionary<String, String>> = []
var speechDic : Dictionary<String, String> = [String : String]()
// [음성 지원 보이스 확인 실시]
AVSpeechSynthesisVoice.speechVoices().forEach { voice in
// [음성 지원 코드]
let BCPCode = voice.language
// [타이틀 확인]
var title = ""
let current = Locale.current.languageCode
let language = NSLocale.init(localeIdentifier: current!)
title = language.displayName(forKey: NSLocale.Key.identifier, value: BCPCode)?.description ?? ""
// [딕셔너리 및 배열에 추가 실시]
speechDic["Title"] = title
speechDic["BCPCode"] = "\(BCPCode)"
speechArray.append(speechDic)
}
// [배열 중복 제거 실시]
let arraySet : Set<Dictionary<String, String>> = Set(speechArray)
speechArray = Array(arraySet)
// [배열 정렬 실시]
speechArray = (speechArray as NSArray).sortedArray(using: [NSSortDescriptor(key: "Title", ascending: true)]) as! [[String:String]]
// [로그 출력 실시]
print("")
print("====================================")
print("[\(self.ACTIVITY_NAME) >> testMain() :: 음성 지원 언어 확인]")
print("speechArray :: \(speechArray)")
print("====================================")
print("")
// [배열 널 체크 수행 실시]
var actionSheet = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet)
if speechArray != nil && speechArray.isEmpty == false && speechArray.count > 0 {
actionSheet = UIAlertController(title: "[음성 지원 언어 확인]", message: nil, preferredStyle: .actionSheet)
// [배열 돌면서 팝업창 리스트 생성]
for item in speechArray {
// [딕셔너리 선언]
let dic : Dictionary<String, String> = item
// [팝업창에 리스트 추가 및 클릭 이벤트 지정]
var style = UIAlertAction.Style.default
let action = UIAlertAction(title: dic["Title"] ?? "", style: style) { action in
print("")
print("====================================")
print("[\(self.ACTIVITY_NAME) >> testMain() :: 팝업창 클릭 이벤트 발생]")
print("title :: \(dic["Title"] ?? "")")
print("BCPCode :: \(dic["BCPCode"] ?? "")")
print("====================================")
print("")
}
actionSheet.addAction(action)
}
}
else {
actionSheet = UIAlertController(title: "[음성 지원 언어 확인]", message: "음성 지원 언어를 확인할 수 없습니다", preferredStyle: .actionSheet)
}
// [취소 버튼 추가]
let cancel = UIAlertAction(title: "취소", style: .cancel)
actionSheet.addAction(cancel)
// [팝업창 표시]
self.present(actionSheet, animated: true, completion: nil)
}
}
[결과 출력]
반응형
'IOS' 카테고리의 다른 글
Comments