私のアプリはEKEvents
標準のカレンダーデータベースを作成して保存しますが、イベントの「メモ」として絵文字を使用すると、カレンダーからイベントを読み取ろうとするとクラッシュすることがわかりました。
で絵文字を使用したくない、または使用する必要はありませんevent.notes
。私はたまたまテストをしていましたが、イベントを保存することができたときはちょっとショックを受けました。(絵文字はカレンダー自体にも表示されます)
ですから、私の問題は2つの方法のいずれかで解決できると思いますが、どちらも理解できませんでした。
1)カスタムキーボードボタンを無効または非表示にできますか?<-私はこの解決策を好む
2)そうでない場合、ユーザーが絵文字を入力していないことを確認するときにチェックするために、すべての標準キーボードで可能なすべての文字を含む文字セットを作成するにはどうすればよいですか?
のように、いくつかの標準文字セットを使用してチェックしようとしましたがalphanumericCharacterSet
、それを使用すると、スペースを入力できません。
ユーザーが入力している文字と照合するために、これまでに使用しているコードは次のとおりです。
- (BOOL)textField:(UITextField *)theTextField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if (string.length == 0) {
return YES;
}
NSCharacterSet *myCharSet = [NSCharacterSet alphanumericCharacterSet];
for (int i = 0; i < [string length]; i++) {
unichar c = [string characterAtIndex:i];
if ([myCharSet characterIsMember:c]) {
return YES;
}
}
UIAlertView *av = [[UIAlertView alloc] initWithTitle:@"Invalid Input" message:@"Oops! You can't use that character." delegate:self cancelButtonTitle:@"Dismiss" otherButtonTitles:nil];
[av show];
return NO;
}
編集:エラーの明確化
エラーはなく、クラッシュするだけです。私のアプリはカレンダーの予定を保存し、それらをリストに表示してユーザーに表示します。その後、ユーザーはイベントを「有料」または「未払い」としてマークできます。その時点.notes
で、イベント「-有料」のプロパティに文字列を追加します。これは、テーブルをリロードするときに、イベントが支払われると、ユーザーに特定のアイコンが表示されるようにするためです。保存されたものにプロパティとして絵文字が含まれている場合でもクラッシュが発生し、.notes
を追加しようとします.notes
。