在 UITextView 中添加按钮和文本

Posted

技术标签:

【中文标题】在 UITextView 中添加按钮和文本【英文标题】:Add buttons and texts in UITextView 【发布时间】:2012-03-14 11:49:36 【问题描述】:

嗨朋友们,我想创建一个可以添加文本和按钮的视图。我想保持顺序。就像在文本视图中一样,我想添加文本,然后是按钮,然后再添加文本。 并且还想在同一区域进行编辑。 我可以在UITextview 中添加按钮,但是如何保持我在按钮之后和任何按钮之前添加的文本序列? 是否有任何示例代码?

我在 UITextView 中添加按钮

UIButton *myButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
myButton .frame = CGRectMake(100, myTextView.contentSize.height, 90, 30);
[myButton setTitle:@"button text" forState:UIControlStateNormal];
[myTextView addSubview:myButton ];

但是我不能在这个按钮之后移动光标。

【问题讨论】:

您是否尝试布局文本以使按钮与文本内联,即嵌入文本流中?如果是这样,CoreText 可能有可能,但我不知道任何现有的解决方案。 【参考方案1】:

UILabel 和 UITextField 控件不能用同样的方式添加,每次都使用 contentSize.height 吗?

【讨论】:

您将不得不在这里解释您所说的“文本”是什么意思 - 如果您不是在谈论文本或标签控件,您是在说您想插入按钮吗?文本视图的中间并让文本视图中显示的文本围绕它流动(之前和之后)? 我强烈反对这样做,因为它违背了该类型控件的预期行为。考虑有一个文本视图,然后是一个按钮,然后是一个文本视图,所有这些都位于某种容器中的另一个之上(即,更大视图的子视图)。这样每个控件的行为都应如此。【参考方案2】:

为文本视图的父级创建一个 uiview 子类,并像这样覆盖命中测试:

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event 

  // Check if the touch occurs within a rect or below a certain point
  BOOL isInsidePassThroughArea = point.y + self.textView.contentOffset.y < 72.f;
  if (isInsidePassThroughArea) 
    return [self.contentView hitTest:point withEvent:event];
  

  return [super hitTest:point withEvent:event];

【讨论】:

以上是关于在 UITextView 中添加按钮和文本的主要内容,如果未能解决你的问题,请参考以下文章

可变高度 UITextView

如何在 ios 的 UITextView 中添加 UIButton?

在 UITextView Objective-C 内的文本末尾添加更多按钮?

从UITextView创建PDF

将图像添加到 UITextView

获取 UITextView 的内容高度