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

Posted

技术标签:

【中文标题】在 UITextView Objective-C 内的文本末尾添加更多按钮?【英文标题】:Add more button at the end of text inside UITextView Objective-C? 【发布时间】:2015-10-12 19:14:31 【问题描述】:

我正在尝试做与此链接http://www.oracle.com/webfolder/ux/mobile/pattern/img/expand-collpase-description.png中的类似的事情

单击“更多”按钮时扩展 UITextView 内的内容。我正在我的 viewDidLoad 中创建按钮,如下所示

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button setTitle:@"more" forState:UIControlStateNormal];
[self.detailPriceView addSubview:button];

从 PFQuery 加载数据后,我正在 UITextView 内设置按钮的框架

PFQuery *query = [PFQuery queryWithClassName:self.restaurantName];
    [query whereKey:@"ItemName" equalTo:self.item_name];

    [query getFirstObjectInBackgroundWithBlock:^(PFObject *itemDataObj, NSError *error) 
        if (!error) 

            self.detailPriceView.text = [itemDataObj objectForKey:@"PriceDetail"];

            self.detailPriceView.text = [self.detailPriceView.text substringToIndex:40];

            [button setFrame:self.detailPriceView.frame];

];

如何在文本末尾的 UITextView 中添加更多按钮?我还创建了一个约束以在单击更多按钮时增加它的高度,但是我无法将约束的高度增加到超过某个阈值大小。

【问题讨论】:

【参考方案1】:

我也在做同样的事情。只需将按钮添加到textView.superView,因为textView 是scrollView。在 textView 中使用按钮的矩形为textView.textContainer.exclusionPaths = [UIBezierPath(rect: rect)]

最后,我做到了。最重要的是rect必须包含textView.frame中。

【讨论】:

供他人参考:let rect = button.frame button.frame 应转换为textView 的坐标。 @贾斯汀瓦莱利 确实应该。接得好。我在情节提要中布置了按钮,所以我已经在那个坐标空间中了。感谢您添加说明。 @DawnSong > 我应该把按钮放在什么文本视图坐标上?【参考方案2】:

我不确定 Apple 是如何实现它的,但我几乎可以保证它不是 UITextView 的子视图。我将如何实现此功能是为 UITextView 设置自定义容器视图。设置容器的默认高度,然后如果 UITextView 的高度大于容器视图的高度,则在右下角(或左,或右上角,或任何你想要的任何地方)显示更多 UIButton,左下角似乎是最有意义的),它只是为容器视图的高度设置动画以适应 UITextView。

如果你真的想在一个 textview 中完成这一切,我想你必须将它子类化以提供这种自定义功能,但其他人可能知道一种方法来完成这一切,而无需子类化 UITextView。我的方法是上面描述的。

【讨论】:

谢谢比尔。我会尝试通过扩展 UITextView 来看看我是否可以做到这一点。但是如何在字符串文本的末尾附加一个按钮?有什么想法吗? 回答:不要。创建一个包含文本视图和按钮的视图,并在视图控制器中添加逻辑,根据文本视图中当前包含的文本宽度定位按钮。

以上是关于在 UITextView Objective-C 内的文本末尾添加更多按钮?的主要内容,如果未能解决你的问题,请参考以下文章

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

Objective-C自定义UITextView(placeholder,长按换行,文字位置文字间距等)

Objective-C 限制文本输入长度

如何快速在 UITableView 中的键盘上方滚动 UITextView

在 Swift 中的 UITextView 上放置阴影

在 UITextView 委托方法中未执行 if/else 语句