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/