2014-10-01 2 views
2

iOS 키보드 확장자를 만들려고하지만 포함하는 앱의 데이터를 확장 프로그램과 동기화/업데이트하는 데 문제가 있습니다. 다큐먼트 상태로 스위프트 키보드 확장 업데이트 NSUserDefaults

, 나는 완벽하게 작동

NSUserDefaults *mySharedDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"com.example.domain.MyShareExtension"]; 
[mySharedDefaults setObject:theAccountName forKey:@"lastAccountName"]; 

을 사용하고 있습니다. 포함하는 응용 프로그램에서 키보드를 시작하기 전에 필자는이를 사용하고 키보드의 viewdidLoad에서 NSUserDefault를 확인하면 모든 것이 잘 작동합니다.

내 포함하는 앱에서 내 NSUserDefaults를 업데이트하는 경우 내 키보드 앱에서 NSUserDefaults가 업데이트되었음을 ​​어떻게 알 수 있습니까?

KVO를 시도했지만 작동하지 않습니다. NSUserDidChangeNotification과 함께 NSUserDefaultsStandard를 시도했지만 작동하지 않습니다. NSUserDefaultsStandard는 키보드 확장을 위해 전혀 작동하지 않습니다.

내 키보드 확장에 NSTimer를 사용하고 NSNserDefaults를 매 X ms 확인하십시오. 그러나 그것은 과잉이다.

나는 AppStore에서 앱이 앱을 만들고 있기 때문에 가능하다고 알고 있습니다. BrightKey 또는 CoolKey는 포함 된 앱에서 키보드 디자인을 변경합니다. 그래서 콜백 또는 데이터를 업데이트 할 항목이 있습니다.

깨끗한 솔루션을 제공하는 사용자에게 미리 감사드립니다.

답변

0

키보드 및 앱로드가있을 때마다 공유 사용자 기본값을 읽고 쓸 수 있습니다.

은 그냥 포함 된 응용 프로그램에 UITextField을 추가하고, Hidden 재산 On을 설정, 그래서 텍스트 필드는 눈에 보이지 않는 :

+0

예,하지만로드를 기다릴 필요없이 수행하고 싶습니다. 앱 BrightKey 및 CoolKey는 예를 들어 키보드를 다시로드하지 않고 키보드 디자인을 변경합니다. –

+0

테마를 선택할 때 키보드를 표시합니다. 그들은 키보드를로드 할 때 키보드가 인식하고 로컬에 저장하는 텍스트 필드에 매우 빠른 텍스트 ID를 입력합니다. – nurxyz

+0

더 명확하게 표현할 수 있습니까? 키보드가 텍스트 ID에 어떻게 액세스합니까? 이제 ID가 어떻게 변경되었으므로 실시간으로 테마를 업로드 할 수 있습니까? –

0

산 트릭이다.

사용자가 테마를 선택한 후 textView.becomeFirstResponder()으로 전화하면 사용자가 테마를 선택한 후 키보드가로드 된 것으로 보입니다. 사용자가 다른 테마를 선택한 후 textView.resignFirstResponder()으로 전화를 걸어 약 0.6 초 (NSUserDefaults 업데이트)를 기다린 다음 다시 textView.becomeFirstResponder()으로 전화하면 키보드에 새로운 테마가로드됩니다! :)

+0

이것은 현재 나의 트릭입니다. 하지만 내가 언급 한 2 개의 앱을 확인하면 키보드가 사임하지 않으므로 그 트릭을 사용하지 않습니다. 잠시 후 키보드가 사라지고 다시 돌아 오게되면 약간 추한 것입니다 ... –