【问题标题】:How to insert UIImageView in UITextView in the same way that iphone default message (SMS) app uses to insert multimedia content in the UITextView如何以与 iphone 默认消息 (SMS) 应用程序在 UITextView 中插入多媒体内容相同的方式在 UITextView 中插入 UIImageView
【发布时间】:2012-04-28 05:01:28
【问题描述】:

我想在具有发送和相机按钮的工具栏的 UITextView 中插入 UIImageView,就像 iPhone 默认 SMS 应用一样。

【问题讨论】:

标签: iphone ios5 ios4


【解决方案1】:

您可以使用 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))];
    }];
 }

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

    • 感谢您的回答,但我要求工具栏中的 UITextView 具有发送按钮和相机按钮,如何在该 UITextview 中输入 UIImage ?
    • 好的,我明白了...我扩展了我的答案给你一些选择。
    【解决方案3】:

    我有一个建议是尝试根据您的要求制作带有图像和文本的 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];
        }
    }
    

    希望对你有帮助。

    【讨论】:

      【解决方案4】:

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

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

      干杯

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-11
        • 2023-03-11
        • 2013-09-04
        • 1970-01-01
        • 2013-10-24
        • 1970-01-01
        相关资源
        最近更新 更多