Итак, мой код выглядит следующим образом:
// Create a containing view to position the button
UIView *containingView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 23.5, 21.5)] autorelease];
// Create a custom button with the image
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setImage:[UIImage imageNamed:@"Settings.png"] forState:UIControlStateNormal];
[button addTarget:self action:@selector(settings) forControlEvents:UIControlEventTouchUpInside];
[button setFrame:CGRectMake(-19, -3, 21.5, 21.5)];
[containingView addSubview:button];
// Create a container bar button
UIBarButtonItem *containingBarButton = [[[UIBarButtonItem alloc] initWithCustomView:containingView] autorelease];
self.navigationItem.rightBarButtonItem = containingBarButton;
Проблема в том, что мой исходный размер файла Settings.png - 21,5, 21,5, и поэтому нажать кнопку очень сложно. Я должен нажать очень сильно, чтобы вызвать срабатывание UITouchUpInside. Это будет явно отклонено, если я положу его в магазин приложений, так как это не соответствует HIG от Apple. Это можно обойти? Мне все еще нужно использовать UIView в качестве контейнера для UIButton, так как я хотел бы правильно расположить его на UINavigationBar