我为UIToolBar
添加了UIBarButtonItem
UITextView
作为inputAccessoryView。它工作正常,但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;
答案 0 :(得分:7)
在iOS 6中,它似乎表现得如预期。 不错的提示:如果您希望按钮显示在右侧而不是左侧,请使用以下方法之一:
UIBarButtonItem *flexibleSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
然后用:
初始化工具栏[toolBar setItems:[NSArray arrayWithObjects:flexibleSpace, doneButton, nil]];
答案 1 :(得分:2)
如果工具栏中没有其他附近的按钮,工具栏似乎会将按钮的活动区域扩展到其边界之外。 Apple工程师必须认为最好是猜测用户打算按哪个而不是根本不做出反应。
答案 2 :(得分:2)
我希望它可以帮助你...
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];
使用假项来获取按钮上的精确缩放位置...