iOS - UIToolBar в качестве inputAccessoryView для UITextView - PullRequest
7 голосов
/ 07 февраля 2012

Я добавил UIToolBar с UIBarButtonItem в качестве inputAccessoryView для UITextView.Он работает нормально, но UIBarButtonItem доступен вне его рамки, возможно, на 50 пикселей снаружи справа.Это не страшно, но меня это раздражает.Кто-нибудь знает почему?

Это мой код (ARC):

UIToolbar *toolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, self.view.bounds.size.height, 320, 44)];
toolBar.barStyle = UIBarStyleBlack;
toolBar.translucent = YES;

UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(doneWriting:)];
[toolBar setItems:[NSArray arrayWithObjects:doneButton, nil]];

self.messageTextView.inputAccessoryView = toolBar;

Ответы [ 3 ]

7 голосов
/ 01 марта 2013

В iOS 6, похоже, ведет себя как ожидалось. Хороший совет: если вы хотите, чтобы кнопка появлялась справа, а не слева, используйте один из них:

UIBarButtonItem *flexibleSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];

Затем инициализируйте панель инструментов с помощью:

[toolBar setItems:[NSArray arrayWithObjects:flexibleSpace, doneButton, nil]];
2 голосов
/ 12 марта 2015

Надеюсь, это поможет вам ...

UIToolbar* keyboardDoneButtonView = [[UIToolbar alloc] init];
[keyboardDoneButtonView sizeToFit];

UIBarButtonItem* PrevButton = [[UIBarButtonItem alloc]  initWithBarButtonSystemItem:105 target:nil  action:nil]; //<
UIBarButtonItem*  NextButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:106  target:nil action:nil]; //>
UIBarButtonItem* doneButton = [[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStyleBordered target:self action:@selector(doneClicked:)];

UIBarButtonItem* flexSpace = [[UIBarButtonItem alloc]  initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
UIBarButtonItem *fake = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil] ;

[keyboardDoneButtonView setItems:[NSArray arrayWithObjects: PrevButton,fake, NextButton,fake,flexSpace,fake,doneButton,nil] animated:YES];

Используйте Поддельный Элемент, чтобы получить точное расположение кнопки на кнопке ...

2 голосов
/ 19 февраля 2012

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

...