有没有选择停止在iOS 8中显示表情符号键盘?它不适用于小键盘和安全文本,但对于电子邮件,它就在那里.如果无法禁用它如何从表情符号中获取字符串值?
Yas*_*tel 107
试试这个:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if ([textField isFirstResponder])
{
if ([[[textField textInputMode] primaryLanguage] isEqualToString:@"emoji"] || ![[textField textInputMode] primaryLanguage])
{
return NO;
}
}
return YES;
}
Run Code Online (Sandbox Code Playgroud)
更多信息请参见这里.
编辑:
您可以使用以下代码从键盘隐藏表情符号:
txtField.keyboardType=UIKeyboardTypeASCIICapable;
Run Code Online (Sandbox Code Playgroud)
编辑:
使用"界面"构建器隐藏键盘中的表情符号选择.
小智 17
这适用于iOS 7和8:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
// Disable emoji input
return [textField textInputMode] != nil;
}
Run Code Online (Sandbox Code Playgroud)
Leo*_*eon 11
只是为了面对与我面临同样问题的任何人更新上面的好答案:
这就是我们这样做的方式:
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
if !string.canBeConvertedToEncoding(NSASCIIStringEncoding){
return false
}
//other conditons
}
Run Code Online (Sandbox Code Playgroud)
编辑
好的,如果你想允许某些字符用于其他语言,使用NSASCIIStringEncoding的解决方案是不好的.
一些用NSASCIIStringEncoding阻止的字母:
如果您想支持来自其他国家/地区的用户,使用NSASCIIStringEncoding不是一个好主意!
我也试过NSISOLatin1StringEncoding:
这要清楚得多.
我也试过NSISOLatin2StringEncoding:
更差.
EDIT2:
以下似乎有效:
extension String {
func containsEmoji() -> Bool {
for i in self.characters {
if i.isEmoji() {
return true
}
}
return false
}
}
extension Character {
func isEmoji() -> Bool {
return Character(UnicodeScalar(0x1d000)) <= self && self <= Character(UnicodeScalar(0x1f77f))
|| Character(UnicodeScalar(0x1f900)) <= self && self <= Character(UnicodeScalar(0x1f9ff))
|| Character(UnicodeScalar(0x2100)) <= self && self <= Character(UnicodeScalar(0x26ff))
}
}
Run Code Online (Sandbox Code Playgroud)
现在我们打电话:
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
if string.containsEmoji() {
return false
}
//other conditons
}
Run Code Online (Sandbox Code Playgroud)
对我有用的解决方案:
self.texField.keyboardType = UIKeyboardTypeASCIICapable;
Run Code Online (Sandbox Code Playgroud)
表情符号键盘将不适用于该KeyboardType.
但是必须检查textField中添加的每个字符的种类,因为用户可以从其他地方复制表情符号,然后粘贴它.
您可以这样做:
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
return [text canBeConvertedToEncoding:NSASCIIStringEncoding];
}
Run Code Online (Sandbox Code Playgroud)
请注意,正如我在另一篇文章中所读到的,这也可能会阻止用户使用带有特殊字符的键盘,例如中文字符.
虽然问题是超级老,我遇到了同样的问题,并且能够通过这个小技巧加载此页面时解决它:
只需在Interface Builder Xcode 8.2.1中选择"ASCII Capable"或"Numbers and Punctuations"
输出为无表情符号键盘= D.
我相信它会帮助某人=)
归档时间: |
|
查看次数: |
30830 次 |
最近记录: |