如何在UITextView中插入UIImageView,以与iPhone默认的短信应用程序类似地插入多媒体内容。

5
我想在带有发送和相机按钮的工具栏的UITextView中插入UIImageView,就像iPhone默认短信应用程序一样。请按照相同方式进行操作。

请查看此链接:https://dev59.com/pHI95IYBdhLWcg3w3h_G#18145676 - Piyush Dubey
4个回答

6
您最好使用一个UIScrollView,在其中管理UITextViewUIImageViewUITextView不支持将图像嵌入文本中。实际上,它几乎不支持除多行文本之外的任何内容。
根据您下面的评论,我可以想到三件事来使图像成为文本输入框的一部分:
  1. 他们没有使用UITextView,而是使用了自定义视图。那种东西很难复制。
  2. 他们在UITextView上覆盖了UIImageView作为子视图,并设置了UITextView的contentInset,以使它们不重叠。
  3. 他们使用单独的UIView来包含UITextViewUIImageView作为子视图,并根据需要简单地排列这些子视图。
2和3都非常相似(只是稍微不同的方法),可能是您最好的方法。个人认为,3可能是最好的,因为它可以最大限度地控制两个视图的位置,但2也应该可以正常工作。

谢谢你的回答,但我想问的是位于工具栏中的UITextView,它有发送按钮和相机按钮,如何在该UITextView中插入UIImage? - Piyush Kashyap
好的,我明白了...我扩展了我的答案,给你提供了一些选项。 - Aaron Hayman

1

我同意Aaron的说法。根据我所看到的,我认为原生短信应用程序实际上是一个高度修改过的UITableViewCell。这些TableCells是复合视图,包含了Aaron建议的UITextView和UIImageView。

可能需要一些更多的工作,但我认为定义自己的UITableCell并使用上述元素进行定制化会非常有用,并符合整体iOS范例。当你与本地范例配合而不是对抗或绕开它们时,事情会变得更好。

祝好


0

我有一个建议,根据您的要求制作带有图像和文本的HTML文件,并将该HTML文件加载到Webview中。

在这里,您还可以使某些特定文本加粗等。

我认为它比textfield好看。

要使Webview看起来像简单的滚动视图,请将此方法放入您的代码中

不要忘记写这个

webView.opaque = NO;,

[self hideGradientBackground:webView];

- (void) hideGradientBackground:(UIView*)theView
{
    for (UIView * subview in theView.subviews)
    {
        subview.backgroundColor = [UIColor clearColor];
        if ([subview isKindOfClass:[UIImageView class]])
            subview.hidden = YES;

        [self hideGradientBackground:subview];
    }
}

希望这能对你有所帮助。


0

您可以使用UITextViewDelegate和ContentInset来实现它。

 - (void)viewDidLoad 
 {
    self.textView.delegate = self;
    [self.textView addSubview:self.addedView];
    [self.textView setContentInset:UIEdgeInsetsMake(0, 0, CGRectGetHeight(self.addedView.frame), 0)];
 }

- (void)textViewDidChange:(UITextView *)textView
 {
    NSLog(@"%@",NSStringFromCGSize(textView.contentSize));
    __weak typeof(self) wself = self;
    [UIView animateWithDuration:0.5f animations:^{
      [wself.addedView setFrame:CGRectMake(0, textView.contentSize.height + 10, CGRectGetWidth(wself.addedView.frame), CGRectGetHeight(wself.addedView.frame))];
    }];
 }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接