Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用自定义字符串向后_Ios_Objective C_Nsstring - Fatal编程技术网

Ios 使用自定义字符串向后

Ios 使用自定义字符串向后,ios,objective-c,nsstring,Ios,Objective C,Nsstring,我使用了一个字符串数组作为表情符号,如下所示: NSArray*表情=@[@“[微笑]”、@“[哭泣]、@“[快乐]”…] 然后在UITextView中显示如下字符串: 我现在很高兴[高兴]现在[微笑] 当我向后单击或删除按钮时,如果最后一个单词在表情符号中,我希望删除整个表情符号字符串,而不仅仅是最后一个字符 有什么想法吗?您可以使用UITextViewDelegate方法检查要删除的内容并删除整个[emoticon]单词来实现类似的效果。我给您介绍了我使用的想法 因为您没有提到您使用的表情符

我使用了一个字符串数组作为表情符号,如下所示:

NSArray*表情=@[@“[微笑]”、@“[哭泣]、@“[快乐]”…]

然后在UITextView中显示如下字符串:

我现在很高兴[高兴]现在[微笑]

当我向后单击删除按钮时,如果最后一个单词在表情符号中,我希望删除整个表情符号字符串,而不仅仅是最后一个字符


有什么想法吗?

您可以使用
UITextViewDelegate
方法检查要删除的内容并删除整个
[emoticon]
单词来实现类似的效果。

我给您介绍了我使用的想法

因为您没有提到您使用的表情符号。
但对于删除逻辑,我想您会从我的代码中了解到这一点

if ([string isEqualToString:@""]) {

    NSString *lastChar = [txthiddenTextField.text substringFromIndex: [txthiddenTextField.text length] - 1];
    NSLog(@"Last char:%@",lastChar);
    txthiddenTextField.text = [txthiddenTextField.text substringToIndex:[txthiddenTextField.text length] - 1];

    NSString *strPlaceHolder;
    strPlaceHolder = txthiddenTextField.text;

    if([lastChar isEqualToString:@"]"])
    {
        int j = 1;
        for (int i = [txthiddenTextField.text length]-1; i >=0; --i)
        {



            NSString *lastChar = [txthiddenTextField.text substringFromIndex: [txthiddenTextField.text length] - 1];
            if([lastChar isEqualToString:@"["])
            {
                NSLog(@"%d",j);
                txthiddenTextField.text = [txthiddenTextField.text substringToIndex:[txthiddenTextField.text length] - 1];
                // NSLog(@"Processing character %@",strPlaceHolder);
                break;
            }
            txthiddenTextField.text = [txthiddenTextField.text substringToIndex:[txthiddenTextField.text length] - 1];
            j = j+1;


        }
    }

    NSLog(@"My text fild value :%@",txthiddenTextField.text);

    return YES;
}
因此,从这里您必须检查结束括号是否出现。
如果结束括号将出现,则必须删除开始括号

然后整个表情符号将被删除

希望这有帮助……

试试这个

NSString *string = self.textView.text;
__block NSString *deleteWord = nil;
__block NSRange rangeOfWord;

[string enumerateSubstringsInRange:NSMakeRange(0, self.textView.selectedRange.location + self.textView.selectedRange.length) options:NSStringEnumerationByWords | NSStringEnumerationReverse usingBlock:^(NSString *substring, NSRange subrange, NSRange enclosingRange, BOOL *stop) {
    deleteWord = substring;
    rangeOfWord = enclosingRange;
    *stop = YES;
}];


if ([emoticons containsObject:deleteWord]) {
    string = [string stringByReplacingCharactersInRange:rangeOfWord withString:@""];
    self.textView.text = string;
    self.textView.selectedRange = NSMakeRange(rangeOfWord.location, 0);
}

您可以使用共享返回按钮操作方法吗。@Macrosoft Dev只是一个UIButton操作。您是显示文字字符串“[smile]”还是将真正的表情符号@MartinR“[happy]”映射到自定义图像