在iOS 8中使用自定义键盘在iMessage中共享图像

Gau*_*rav 9 keyboard ios emoji ios8 ios-app-extension

我正在使用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];
    }
}
Run Code Online (Sandbox Code Playgroud)

添加图片:(不工作)

-(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];
}
Run Code Online (Sandbox Code Playgroud)

是否有可能将图像传递给 [self.textDocumentProxy insertText:string];

以下附图显示了我想要如何使用此图像键盘.我很惊讶表情符号键盘会起作用吗?在此输入图像描述

Mat*_*att 9

据我所知,从iOS 8 beta 4开始,您所寻找的行为是不可能的.

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

以下是该insertText:方法的标题<UITextDocumentProxy>:

- (void)insertText:(NSString *)text;
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,它需要一个简单的NSString......而不是一个NSAttributedString.这就是您插入图像的尝试不起作用的原因.

但是,尽管您无法添加图片,但仍然可以插入表情符号,因为表情符号实际上只是一个Unicode字符.

要添加表情符号,只需插入正确的Unicode字符:

[self.textDocumentProxy insertText:@"\U0001F603"];
Run Code Online (Sandbox Code Playgroud)

有用的链接:

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

Unicode字符作为NSStrings:使用NSString编写unicode字符

  • 实现此目的的唯一方法是将图像复制到剪贴板,用户将手动粘贴它. (4认同)