Просто создать 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];
}
Существует библиотека, на которой вы можете взглянуть.
Создайте подкласс 'UIView' с' UILabel' и 'UIButton'. – carloabelli