Мой пользовательский подкласс расширить UIControl (EditableImageView) В основном он содержит 3 подвидами:вперед событие из пользовательского UIControl подкласса
- UIButton (UIButtonTypeCustom)
- UIImageView
- UILabel
Все класс отлично работает, но теперь я хочу связать некоторые события, созданные из этого класса, другому. В частности, , когда кнопка нажата, я хочу переслать событие владельцу viewcontroller, чтобы я мог обработать событие. Проблема в том, что я не могу понять, как реализовать это поведение. В EditableImageView я могу поймать событие касания, используя [button addTarget: self action: @selector (buttonPressed :) forControlEvents: UIControlEventTouchUpInside], но я не знаю, как переправить его внутри кнопки. я также пытался реализовать touchesBegan, но кажется, никогда не называли ...
Я хотел бы, чтобы захватить кнопку пресс событие из ViewController таким образом:
- (void)viewDidLoad {
[super viewDidLoad];
self.imageButton = [[EditableImageView alloc] initWithFrame:CGRectMake(50.0f, 50.0f, 80.0f, 80.0f)];
[imageButton addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:imageButton];
[imageButton setEditing:NO];
}
Это мой метод инициализации подкласса UIControl:
- (id)initWithFrame:(CGRect)frame {
if (self = [super initWithFrame:frame]) {
[self setBackgroundColor:[UIColor clearColor]];
button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(0.0f, 0.0f, frame.size.width, frame.size.height);
[button setImage:[UIImage imageNamed:@"nene_70x70.png"] forState:UIControlStateNormal];
[button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:button];
transparentLabelBackground = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"editLabelBackground.png"]];
transparentLabelBackground.hidden = YES;
[self addSubview:transparentLabelBackground];
// create edit status label
editLabel = [[UILabel alloc] initWithFrame:CGRectZero];
editLabel.hidden = YES;
editLabel.userInteractionEnabled = NO; // without this assignment the button will not be clickable
editLabel.textColor = [UIColor whiteColor];
editLabel.backgroundColor = [UIColor clearColor];
editLabel.textAlignment = UITextAlignmentLeft;
UIFont *labelFont = [UIFont systemFontOfSize:16.0];
editLabel.font = labelFont;
editLabel.text = @"edit";
labelSize = [@"edit" sizeWithFont:labelFont];
[self addSubview:editLabel];
}
return self;
}
Спасибо.