ios - 表情符号键盘布局未正确绘制并且缺少许多表情符号

标签 ios objective-c uitextfield uitextview uikeyboard

My app's virtual keyboard for emojis is looking really messed up.

键盘在我手机上的所有其他应用程序以及我测试的新项目上看起来都非常正常。代码很简单:

UITextField *textField = [UITextField new];
[otherView addSubview:textField];
[textField becomeFirstResponder];

我使用 UITextField 还是 UITextView 都没有关系。 什么会导致这种行为?

在问这个问题之前我尝试了一些搜索词(对于有这个问题的其他人):w3c icon placeholder bug uikeyboard

最佳答案

我通过删除文件直到键盘再次开始正常工作来解决这个问题!

原来(在我的NSString 类别中)我命名为+(NSString*)stringWithUnichar:(unichar)value; 的方法是一个私有(private)方法 显然是 Emoji UIKeyboard 使用的。

在我将方法重命名为+(NSString*)unicharToString:(unichar)value;之后,表情符号都恢复了,但是页码指示器(键盘顶部的点)仍然错位。

我进一步查看,发现我的 UIView 类别 也有干扰方法名称。它被命名为 - (void) setOrigin:(CGPoint)origin;。无论如何,这可能是对类别的错误使用......

故事的寓意:小心您在 Apple 框架类别中的方法名称!

这是 Apple 在 "Naming Methods" 上发表的一篇相关文章.就在最后,它讨论了私有(private)方法和在对 Cocoa 框架进行子类化时为方法附加前缀。苹果公司没有听从他们自己的建议真是太可惜了。相反,他们只是将这种不必要的负担转嫁给开发人员……如果 NSString 的 stringWithUnichar: 被命名为 APPLE_stringWithUnichar:,这个问题就永远不会发生,例如。

关于ios - 表情符号键盘布局未正确绘制并且缺少许多表情符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23722549/

相关文章:

ios - 如何使用 swift 正确使用 Nib ?

ios - 使用按钮更改 UIAlertView 内容

objective-c - UIViewReportBrokenSuperviewChain

iphone - 开发者可以在邮件应用程序中访问未读邮件吗?

ios - UITextField 上的键盘关闭但无法单击其他 UITextField

ios - 更改推送通知声音

objective-c - 对象的 NSDictionnary 条目

ios - 确保 UITextField 不仅充满空格

ios - 如何改变 UITextField 的形状?

ios - Objective c 如何从布局内的相机检测对象?