我正在使用iOS 8自定义键盘,在该键盘上我已使用一些图像(如笑脸)设计了键盘。我希望此键盘可以与iMessage一起使用。当我尝试发送文本时,它可以正常工作,但无法在那里共享图像。我尝试了以下代码:

要共享文本,请执行以下操作:

-(void)shouldAddCharector:(NSString*)Charector{
    if ([Charector isEqualToString:@"Clear"]) {
        [self.textDocumentProxy deleteBackward];
    } else if([Charector isEqualToString:@"Dismiss"]){
        [self dismissKeyboard];
    } else {
        [self.textDocumentProxy insertText:Charector];
    }
}

添加图像:(不起作用)
-(void)shouldAddImage:(UIImage*)oneImage
{
        UIImage* onions = [UIImage imageNamed:@"0.png"];

        NSMutableAttributedString *mas;
        NSTextAttachment* onionatt = [NSTextAttachment new];
        onionatt.image = onions;
        onionatt.bounds = CGRectMake(0,-5,onions.size.width,onions.size.height);
        NSAttributedString* onionattchar = [NSAttributedString attributedStringWithAttachment:onionatt];

        NSRange r = [[mas string] rangeOfString:@"Onions"];
        [mas insertAttributedString:onionattchar atIndex:(r.location + r.length)];
        NSString *string =[NSString stringWithFormat:@"%@",mas];
        [self.textDocumentProxy insertText:string];
}

是否有可能将图像传递给[self.textDocumentProxy insertText:string];
以下所附图像显示了我到底想如何使用此图像键盘。我很惊讶表情符号键盘将如何工作?

最佳答案

据我所知,从iOS 8 beta 4 起,您正在寻找的行为是不可能的。

当前,iOS自定义键盘与文本交互的唯一方法是通过<UITextDocumentProxy>,并且插入任何内容的唯一方法是通过insertText:方法。

这是insertText:<UITextDocumentProxy>方法的 header :

- (void)insertText:(NSString *)text;

如您所见,它需要一个简单的NSString ...而不是NSAttributedString。这就是为什么您尝试插入图像不起作用的原因。

但是,尽管您无法添加图片,但是插入表情符号还是很有可能的,因为表情符号实际上只是一个Unicode字符。

要添加表情符号,只需插入适当的Unicode字符:
[self.textDocumentProxy insertText:@"\U0001F603"];

有用的链接:

Unicode表情符号列表:http://apps.timwhitlock.info/emoji/tables/unicode

Unicode字符作为NSStrings :Writing a unicode character with NSString

关于ios - 在iOS 8中使用“自定义键盘”在iMessage中共享图像,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24933251/

10-11 14:51
查看更多