【发布时间】:2013-02-10 17:17:23
【问题描述】:
我的应用程序创建 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。
【问题讨论】:
-
如果活动笔记中有 Emoji 字符会出现什么错误?您最好的解决方案可能是解决该问题。
-
@rmaddy 这不是错误,他只是不想要它,干净的文本会被有趣的图标污染
-
@rmaddy,请参阅我的编辑。我解释了到底发生了什么。
-
@jhilgert00 不,这不能回答我的问题。崩溃中显示的实际错误是什么?你看过堆栈跟踪吗?您可能有一个可以修复的简单错误。
-
好的,等一下。一定要给你....
标签: ios uitextfield uikeyboard nscharacterset