5

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

4

4 回答 4

6

您最好使用 aUIScrollView并在其中管理UITextViews 和UIImageViews 。 UITextView不支持添加与文本内联的图像。事实上,它实际上不支持多行文本以外的任何内容。

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

  1. 他们没有使用UITextView,而是使用一些自定义视图。这种东西很难复制。
  2. 他们将 a 作为子视图覆盖UIImageViewUITextView设置 contentInset ,UITextView因此没有重叠。
  3. 他们使用单独UIView的来包含UITextViewUIImageView作为子视图,并根据需要简单地排列这些子视图。

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

于 2012-04-16T20:46:12.803 回答
1

我同意亚伦。根据我所见,我相信原生 SMS 应用实际上是一个 UITableView,它带有高度修改的 TableCells。然后 TableCells 是包含 UITextView 和 UIImageView 的复合视图,正如 Aaron 建议的那样。

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

干杯

于 2012-04-17T02:12:57.270 回答
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))];
    }];
 }
于 2014-09-24T09:35:02.557 回答
0

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

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

我觉得很好看然后文本字段。

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

我希望这可以帮助你。

于 2012-04-17T05:46:31.903 回答