Попадание в цель на UIToolbar с помощью кнопок с пользовательскими изображениями неверно - PullRequest
3 голосов
/ 17 августа 2010

У меня есть UIToolbar, который я настроил со своим собственным фоновым изображением. Следовательно, встроенный внешний вид UIBarButtonItem не работает для меня, поэтому я использую изображения, которые уже готовы к показу в панели. Я создаю элемент пользовательской кнопки следующим способом:

+ (UIBarButtonItem *)customWithImage:(UIImage *)image enabled:(BOOL)enabled target:(id)target action:(SEL)selector {
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    //I've tried different values for the frame here, but no luck
button.frame = CGRectMake(0, 0, 44, 44);
button.enabled = enabled;
button.showsTouchWhenHighlighted = YES;
[button addTarget:target action:selector forControlEvents:UIControlEventTouchUpInside];
[button setImage:image forState:UIControlStateNormal];

UIBarButtonItem *it = [[[UIBarButtonItem alloc] initWithCustomView:button] autorelease];
    //Tried changing this, to no avail
it.width = 32.f;
return it;

У меня есть одна кнопка слева и одна справа, и я пытаюсь сделать так, чтобы, если вы нажмете в крайнем левом или крайнем правом углу панели инструментов, нажата соответствующая кнопка. Однако с этими пользовательскими кнопками целевые объекты не расширяются до краев панели инструментов UIToolbar, а вставляются с боков:

http://skitch.com/andpoul/d1p8g/hit-targets

Любая помощь с благодарностью!

Ответы [ 2 ]

1 голос
/ 18 августа 2010

UIBarButtonItem.width может быть проигнорировано, если вы используете настраиваемое представление (возможно, оно просто использует ширину представления).

Хромой хак - сделать панель инструментов шире (чтобы она торчала за пределами экрана) и добавить прозрачные края к фоновому изображению для компенсации. Это приближает кнопки к краю экрана.

Альтернативой является просто использование UIImageView с подпредставлениями UIButton.

0 голосов
/ 18 августа 2010

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

...