Не могу обработать события UIBarButtonItem
У меня есть UIImageView
, который я добавляю в качестве фона UIBarButtonItem
, Я делаю UIBarButtonItem как правильный barbuttonitem моего контроллера навигации. Я не в состоянии справиться с UIBarButtonItem
событие click, поскольку элемент управления не вводит метод, пока я отлаживаю. Что может быть причиной этого?
UIImageView *myImage = [[UIImageView alloc] initWithFrame:CGRectMake(0,0,32,32)];
[myImage setImage:[UIImage imageNamed:@"logo.png"]];
UIBarButtonItem *rightBarButton = [[UIBarButtonItem alloc] initWithCustomView:myImage];
//rightBarButton.target = self;
//rightBarButton.action = @selector(onMyMethod);
if(isRight){
self.navigationItem.rightBarButtonItem = rightBarButton;
self.navigationItem.rightBarButtonItem.target = self;
self.navigationItem.rightBarButtonItem.action = @selector(onMyMethod);
}
3 ответа
Решение
Исходя из ответа RIP, я изменил UIBarButtonItem
и создал UIButton
вместо этого и добавил его как подпредставление навигационного контроллера
UIImage *image = [UIImage imageNamed:@"logo.png"];
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setBackgroundImage:image forState:UIControlStateNormal];
[button addTarget:self action:@selector(onMyMethod:) forControlEvents:UIControlEventTouchUpInside];
CGRect frame = CGRectMake(260.0, 7.0, 32.0, 32.0);
button.frame = frame;
[button setBackgroundImage:image forState:UIControlStateNormal];
[self.navigationController.navigationBar addSubview:button];
Я думаю, что цель и действие не будут работать при использовании initWithCustomView UIBarButton, поэтому вы можете использовать что-то вроде
UIImageView *myImage = [[UIImageView alloc] initWithFrame:CGRectMake(0,0,32,32)];
[myImage setImage:[UIImage imageNamed:@"logo.png"]];
UIButton* rightButton = [UIButton buttonWithType: UIButtonTypeInfoLight];
[rightButton addTarget:self
action:@selector(onMyMethod:)
forControlEvents:UIControlEventTouchDown];
UIBarButtonItem *rightBarButton = [[UIBarButtonItem alloc] initWithCustomView:rightButton];
Отредактируйте ваш код:
UIImageView *myImage = [[UIImageView alloc] initWithFrame:CGRectMake(0,0,32,32)];
myImage. userInteractionEnabled = Yes;
[myImage setImage:[UIImage imageNamed:@"logo.png"]];
UIBarButtonItem *rightBarButton = [[UIBarButtonItem alloc] initWithCustomView:myImage];
if(isRight)
{
self.navigationItem.rightBarButtonItem = rightBarButton;
self.navigationItem.rightBarButtonItem.target = self;
self.navigationItem.rightBarButtonItem.action = @selector(onMyMethod:);
}
Попробуйте это Спасибо:)