iOS 이모티콘 입력 제한(emoji)
그래서 이런 수요가 생겼다. TextField나 TextView에서 모든 이모티콘을 입력하는 것을 제한한다(시스템이 가지고 있는 이모티콘, 제3자 키보드의 이모티콘, 그리고 일부 한자 유형의 이모티콘 포함).
다음 방법을 이용하여stringContainsemoji는 시스템 키보드의 표정을 제한할 수 있습니다
/**
* emoji
* @param string
* @return YES( )
*/
- (BOOL)stringContainsEmoji:(NSString *)string {
__block BOOL returnValue = NO;
[string enumerateSubstringsInRange:NSMakeRange(0, [string length]) options:NSStringEnumerationByComposedCharacterSequences usingBlock:
^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {
const unichar hs = [substring characterAtIndex:0];
// surrogate pair
if (0xd800 <= hs && hs <= 0xdbff) {
if (substring.length > 1) {
const unichar ls = [substring characterAtIndex:1];
const int uc = ((hs - 0xd800) * 0x400) + (ls - 0xdc00) + 0x10000;
if (0x1d000 <= uc && uc <= 0x1f77f) {
returnValue = YES;
}
}
} else if (substring.length > 1) {
const unichar ls = [substring characterAtIndex:1];
if (ls == 0x20e3) {
returnValue = YES;
}
} else {
// non surrogate
if (0x2100 <= hs && hs <= 0x27ff) {
returnValue = YES;
} else if (0x2B05 <= hs && hs <= 0x2b07) {
returnValue = YES;
} else if (0x2934 <= hs && hs <= 0x2935) {
returnValue = YES;
} else if (0x3297 <= hs && hs <= 0x3299) {
returnValue = YES;
} else if (hs == 0xa9 || hs == 0xae || hs == 0x303d || hs == 0x3030 || hs == 0x2b55 || hs == 0x2b1c || hs == 0x2b1b || hs == 0x2b50) {
returnValue = YES;
}
}
}];
return returnValue;
}
아래의 이 방법을 이용하여 has Emoji는 제3자 키보드의 표정을 제한할 수 있다
/**
* emoji
* @param string
* @return YES( )
*/
- (BOOL)hasEmoji:(NSString*)string;
{
NSString *pattern = @"[^\\u0020-\\u007E\\u00A0-\\u00BE\\u2E80-\\uA4CF\\uF900-\\uFAFF\\uFE30-\\uFE4F\\uFF00-\\uFFEF\\u0080-\\u009F\\u2000-\\u201f\r
]";
NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern];
BOOL isMatch = [pred evaluateWithObject:string];
return isMatch;
}
아래의 이 방법을 이용하여 has Emoji는 제3자 키보드의 표정을 제한할 수 있다
/**
* emoji
* @param string
* @return YES( )
*/
- (BOOL)hasEmoji:(NSString*)string;
{
NSString *pattern = @"[^\\u0020-\\u007E\\u00A0-\\u00BE\\u2E80-\\uA4CF\\uF900-\\uFAFF\\uFE30-\\uFE4F\\uFF00-\\uFFEF\\u0080-\\u009F\\u2000-\\u201f\r
]";
NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern];
BOOL isMatch = [pred evaluateWithObject:string];
return isMatch;
}
아래의 이 방법을 이용하여 is Nine KeyBoard는 현재 9궁격 입력을 사용하고 있는지 판단할 수 있습니다
/**
@param string
@return YES( )
*/
-(BOOL)isNineKeyBoard:(NSString *)string
{
NSString *other = @"➋➌➍➎➏➐➑➒";
int len = (int)string.length;
for(int i=0;i
다음은 현재 UITextView에서 표정 입력을 금지하는 중요한 코드입니다. 에이전트를 준수하세요~
#pragma mark -------UITextViewDelegate
-(BOOL) textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
if ([textView isFirstResponder]) {
if ([[[textView textInputMode] primaryLanguage] isEqualToString:@"emoji"] || ![[textView textInputMode] primaryLanguage]) {
return NO;
}
//
if ([self isNineKeyBoard:text] ){
return YES;
}else{
if ([self hasEmoji:text] || [GeneralMethods stringContainsEmoji:text]){
return NO;
}
}
}
return YES;
}
UIText Field는 이 방법에 적어주시면 됩니다.
#pragma mark -----UITextFieldDelegate
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
}
몇 가지 유용한 방법을 첨부합니다.
//----- emoji
- (NSString *)disable_emoji:(NSString *)text {
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[^\\u0020-\\u007E\\u00A0-\\u00BE\\u2E80-\\uA4CF\\uF900-\\uFAFF\\uFE30-\\uFE4F\\uFF00-\\uFFEF\\u0080-\\u009F\\u2000-\\u201f\r
]"options:NSRegularExpressionCaseInsensitive error:nil];
NSString *modifiedString = [regex stringByReplacingMatchesInString:text
options:0
range:NSMakeRange(0, [text length])
withTemplate:@""];
return modifiedString;
}
/**
* 、 、
*/
- (BOOL)isInputRuleAndNumber:(NSString *)str
{
NSString *other = @"➋➌➍➎➏➐➑➒"; //
unsigned long len=str.length;
for(int i=0;i= 0x4e00 && a <= 0x9fa6))
||([other rangeOfString:str].location != NSNotFound)
))
return NO;
}
return YES;
}
주의: 위와 같은 방법은 키보드의 이모티콘 입력을 제한할 수 있지만, 이모티콘을 입력해야 하고, 다음 서버에서 이 이모티콘을 되돌려주고, 페이지에 다시 표시하려면 아래의 이 글을 보십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.