【发布时间】:2012-04-28 05:01:28
【问题描述】:
我想在具有发送和相机按钮的工具栏的 UITextView 中插入 UIImageView,就像 iPhone 默认 SMS 应用一样。
【问题讨论】:
我想在具有发送和相机按钮的工具栏的 UITextView 中插入 UIImageView,就像 iPhone 默认 SMS 应用一样。
【问题讨论】:
您可以使用 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))];
}];
}
【讨论】:
您最好使用UIScrollView 并在其中管理UITextViews 和UIImageViews。 UITextView 不支持在文本中添加图片。事实上,它并不真正支持多行文本以外的任何内容。
根据您在下面的评论,我可以想到三件事来将图像作为文本输入框的一部分:
UITextView,而是使用了一些自定义视图。这种事情很难复制。UIImageView 覆盖在UITextView 上作为子视图,并设置UITextView 的contentInset,因此没有重叠。 UIView 来包含UITextView 和UIImageView 作为子视图,并根据需要简单地排列这些子视图。2 和 3 都非常相似(只是方法略有不同),可能是您最好的方法。就个人而言,我认为 3 可能是最好的,因为它可以让您最大程度地控制两个视图的位置,但 2 也应该可以正常工作。
【讨论】:
我有一个建议是尝试根据您的要求制作带有图像和文本的 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];
}
}
希望对你有帮助。
【讨论】:
我同意亚伦的观点。根据我所见,我相信原生 SMS 应用实际上是一个 UITableView,它带有高度修改的 TableCells。然后 TableCells 是包含 UITextView 和 UIImageView 的复合视图,正如 Aaron 建议的那样。
可能需要做更多的工作,但我认为您会发现自定义使用上述元素定义自己的 UITableCell 将非常有用,并且符合整个 iOS 范例。当您使用本机范例时,事情会比反对/围绕它们更好地工作。
干杯
【讨论】: