使用 UILabel 和 UIButton 显示用户标签
Posted
技术标签:
【中文标题】使用 UILabel 和 UIButton 显示用户标签【英文标题】:Displaying a User Tag with a UILabel and UIButton 【发布时间】:2014-08-15 01:14:45 【问题描述】:在我的应用程序中,我有一个标签列表,对应于我想要显示的用户。标签应该在右侧有一个文本字段和一个用于删除标签的按钮(很像提问时本网站上的标签!)
我只希望标签的一部分是可点击的,所以我不想在 UIButton 中放置 UILabel,而且似乎将 UIButton 添加到 UILabel 是不好的做法。创建此对象的最佳方法是什么? 我想要类似于 UITableViewCell 的东西,但不是 UITableViewCell,因为它不会显示在表格视图中。
【问题讨论】:
使用UILabel
和UIButton
创建UIView
的子类。
【参考方案1】:
只是为了创建一个UIView
子类,我们可以将它命名为TagView
,将UILabel
和UIButton
显示出来,不要忘记创建一个委托协议来进行操作响应。
也许是这样的。
@protocol TagViewDelegate
@optional
- (void)didSelectedTagView:(TagView *)tagView;
- (void)didTagViewAccessoryButtonTapped:(TagView *)tagView;
@end
@interface TagView : UIView
UILabel *label;
UIButton *accessoryButton;
@property (weak, nonatomic) id delegate;
@property (readonly, nonatomic) UILabel *label;
@end
然后为标签实现UITapGestureRecognizer
,为按钮实现touchUpInside事件
- (void)initUIElement
// give it a gestureRecognizer for label to response the label did select
UITapGestureRecognizer *labelTapGR = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didSelectedLabel:)];
[label addGestureRecognizer:labelTapGR];
[accessoryButton addTarget:self action:@selector(accessoryTapped:) forControlEvents:UIControlEventTouchUpOutside];
在 didSelectedLabel:
和 accessoryTapped:
方法中,像这样响应 tagView 的委托。
- (void)didSelectedLabel:(UITapGestureRecognizer *)gestureRecognizer
[self.delegate didSelectedTagView:self];
- (void)accessoryTapped:(id)sender
[self.delegate didTagViewAccessoryButtonTapped:self];
有一个图书馆你可以看看。
DWTagList【讨论】:
虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。 @Dijkgraaf 我更新了我的答案,谢谢你的留言。【参考方案2】:就像 cabellicar123 所说,使用 UIView
并将您的 UILabel
和 UIButton
放入其中。你有几种方法可以做到这一点。
首先,您可以制作一个主视图为 UIView 的 XIB 文件,只需将 UIButton
和 UILabel
拖入其中并按照您想要的方式放置它们,然后在代码中加载 nib需要它。
第二种是以编程方式创建UIView
,并使用addSubview
方法并以这种方式添加您的UILabel
和UIButton
。如果您使用此方法,请确保您已使用initWithFrame
定义了这两个子视图,以便它们正确放置在UIView
内。我的意思是这些视图的原点应该相对于UIView
的左上角。
【讨论】:
以上是关于使用 UILabel 和 UIButton 显示用户标签的主要内容,如果未能解决你的问题,请参考以下文章
使用 UIButton 从 UIPickerView 向 UILabel 显示输出
UILabel 阻止 UIButton 显示,直到您从调试视图层次结构继续
iOS:表格单元格中的 UILabel 和 UIButton
使用下一个和上一个 UIButton 在 UITextView/UILabel 中更改不同的文本