使用 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,因为它不会显示在表格视图中。

【问题讨论】:

使用UILabelUIButton 创建UIView 的子类。 【参考方案1】:

只是为了创建一个UIView 子类,我们可以将它命名为TagView,将UILabelUIButton 显示出来,不要忘记创建一个委托协议来进行操作响应。

也许是这样的。

@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 并将您的 UILabelUIButton 放入其中。你有几种方法可以做到这一点。

首先,您可以制作一个主视图为 UIView 的 XIB 文件,只需将 UIButtonUILabel 拖入其中并按照您想要的方式放置它们,然后在代码中加载 nib需要它。

第二种是以编程方式创建UIView,并使用addSubview 方法并以这种方式添加您的UILabelUIButton。如果您使用此方法,请确保您已使用initWithFrame 定义了这两个子视图,以便它们正确放置在UIView 内。我的意思是这些视图的原点应该相对于UIView的左上角。

【讨论】:

以上是关于使用 UILabel 和 UIButton 显示用户标签的主要内容,如果未能解决你的问题,请参考以下文章

使用 UIButton 从 UIPickerView 向 UILabel 显示输出

UILabel 阻止 UIButton 显示,直到您从调试视图层次结构继续

iOS:表格单元格中的 UILabel 和 UIButton

使用下一个和上一个 UIButton 在 UITextView/UILabel 中更改不同的文本

自动布局:包含 UILabel + UIButton 的标题视图

UILabel 和 UIButton - 截断标签而不是按钮