如何在UITextView中插入UIImageView,就像iPhone默认消息(SMS)应用程序用于在UITextVi



我想在UITextView的工具栏中插入UIImageView,具有发送和相机按钮,其方式与iPhone默认短信应用程序相同。

你最好使用UIScrollView并管理其中的UITextViewUIImageViewUITextView不支持添加与文本内联的图像。事实上,除了多行文本之外,它并不真正支持任何其他内容。

根据您在下面的评论,我可以想到三件事来获取图像作为文本输入框的一部分:

  1. 他们没有使用UITextView,而是使用一些自定义视图。 这种事情很难复制。
  2. 他们将UIImageView作为子视图覆盖在UITextView上,并设置UITextView的内容内陷,以便没有重叠。
  3. 他们使用单独的UIViewUITextViewUIImageView作为子视图包含在内,并根据需要简单地排列这些子视图。

2和3都非常相似(只是方法略有不同),可能是你最好的方法。 就个人而言,我认为 3 可能是最好的,因为它可以让您最大程度地控制两个视图的位置,但 2 也应该可以正常工作。

我同意亚伦的观点。 根据我所看到的,我相信原生短信应用程序实际上是一个具有高度修改的TableCells的UITableView。 然后,TableCells是包含UITextView和UIImageView的复合视图,如Aaron所建议的那样。

前面可能需要做更多的工作,但我认为您会发现使用上述元素定义自己的UITableCell的自定义将非常有用,并且符合整体iOS范式。 当你使用原生范式时,事情比反对/围绕它们工作要好得多。

干杯

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

在这里,您还可以返回一些特定的文本粗体等。

我认为看起来不错,然后文本字段。

要使 Web 视图看起来像简单的滚动视图,只需将此方法放入您的代码中即可

别忘了写这个

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];
    }
}

我希望这对你有所帮助。

您可以使用

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))];
    }];
 }

最新更新