在 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,长按换行,文字位置文字间距等)