2

У меня есть контроллер навигации, который я добавил в навигационную панель UIButton, но с ней что-то не так. Даже если я коснусь пути за пределами кнопки, он по-прежнему вызывает это действие.UIButton отвечает на событие вне рамки

Это, как создать и добавить кнопку:

UIButton *backBtn = [UIButton buttonWithType:UIButtonTypeCustom]; 
[backBtn setImage:[UIImage imageNamed:@"btn_back.png"] forState:UIControlStateNormal]; 
[backBtn addTarget:self action:@selector(backPressed:) forControlEvents:UIControlEventTouchUpInside]; 
[backBtn setFrame:CGRectMake(0, 0, 70, 30)]; 
    //[backBtn setFrame:CGRectMake(20, 7, 70, 30)]; 

self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:backBtn] autorelease]; 

Вот диапазон нажмите на кнопку:

http://www.flickr.com/photos/[email protected]/9465901718

+0

также [Почему UINavigationBar украсть события прикосновения?] (Http://stackoverflow.com/q/9079907/643383) – Caleb

ответ

1

Это по размеру левой кнопкой и правой кнопкой по умолчанию. Поэтому мы ничего не можем сделать с помощью левой и правой кнопок. Потому что его область левой и правой кнопки. Если вы хотите, чтобы пользовательская кнопка в этом случае показывала только ваш данный фрейм, но он будет работать во всей области левой кнопки.

+0

Это что большой? : | –

+0

Я имею в виду его по умолчанию размер левой кнопки ... и если вы хотите, чтобы пользовательская кнопка в этом случае отобразила только ваш данный кадр, но он будет работать во всей области левой кнопки. –

+0

Ну, это ответ, но я действительно думаю, что это глупо ... –

0

Попробуйте это.

UIBarButtonItem *customItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"btn_back.png"] style:UIBarButtonItemStylePlain target:self action:@selector(Back:)]; 
[self.navigationController setHidesBackButton:YES]; 
[self.navigationItem setLeftBarButtonItem: customItem];
Смежные вопросы