我的应用程序创建并存储EKEvents
到标准日历数据库中,但是,我发现如果我使用表情符号作为事件的“注释”,它会在尝试从日历中读取事件时导致崩溃。
我不想或不需要在event.notes
. 我只是碰巧在测试,当它让我保存事件时有点震惊。(表情符号甚至出现在日历本身)
所以我认为我的问题可以通过两种方式之一来解决,但我都无法弄清楚。
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
.