放置在 pickerview 中的工具栏上的 UIBarButtonItem 操作不起作用
Action for UIBarButtonItem on toolbar which is placed in pickerview not working
我有一个在界面生成器中创建的 UIPickerview。通过代码,我放置了一个工具栏作为其子视图,并放置了一个完成按钮作为工具栏按钮项。我想在单击完成按钮时执行一个操作(隐藏 pickerview 和一些额外的东西)。但由于某种原因,完成按钮的操作不起作用。下面是在 viewDidLoad 中创建工具栏和栏按钮项的代码。
UIToolbar *toolBar= [[UIToolbar alloc] initWithFrame:CGRectMake(0,0,320,44)];
toolBar.barTintColor = [UIColor colorWithRed:70/250.0f green:70/250.0f blue:70/250.0f alpha:1.0];
UIBarButtonItem *barButtonDone = [[UIBarButtonItem alloc] initWithTitle:@"Done"
style:UIBarButtonItemStyleDone target:self action:@selector(doneButtonTapped:)];
UIBarButtonItem *flexible = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
toolBar.items = @[flexible, barButtonDone, flexible];
barButtonDone.tintColor=[UIColor colorWithRed:227/255.0f green:178/255.0f blue:49/255.0f alpha:1.0];
[picker addSubview:toolBar];
[picker bringSubviewToFront:toolBar];
这里是 doneButtonTapped 方法:
-(void)doneButtonTapped:(UIBarButtonItem *)sender{
NSLog(@"Done button tapped");
picker.hidden = true;
[self.view bringSubviewToFront:txtCity];
[self.view bringSubviewToFront:advancedSearchLine];
[self.view bringSubviewToFront:txtCityLine];
}
我检查了布局调试器,而 运行 应用程序和完成按钮确实位于视图的前面,所以它前面没有任何东西可以阻止它工作。我做错了什么?
您不能将工具栏添加为选取器的子视图 view.create UIView 中的容器将工具栏和选取器添加为子视图。
UIView *inputView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, screenWidth, toolBar.frame.size.height + picker.frame.size.height)];
inputView.backgroundColor = [UIColor clearColor];
[inputView addSubview:picker];
[inputView addSubview:toolBar];
我有一个在界面生成器中创建的 UIPickerview。通过代码,我放置了一个工具栏作为其子视图,并放置了一个完成按钮作为工具栏按钮项。我想在单击完成按钮时执行一个操作(隐藏 pickerview 和一些额外的东西)。但由于某种原因,完成按钮的操作不起作用。下面是在 viewDidLoad 中创建工具栏和栏按钮项的代码。
UIToolbar *toolBar= [[UIToolbar alloc] initWithFrame:CGRectMake(0,0,320,44)];
toolBar.barTintColor = [UIColor colorWithRed:70/250.0f green:70/250.0f blue:70/250.0f alpha:1.0];
UIBarButtonItem *barButtonDone = [[UIBarButtonItem alloc] initWithTitle:@"Done"
style:UIBarButtonItemStyleDone target:self action:@selector(doneButtonTapped:)];
UIBarButtonItem *flexible = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
toolBar.items = @[flexible, barButtonDone, flexible];
barButtonDone.tintColor=[UIColor colorWithRed:227/255.0f green:178/255.0f blue:49/255.0f alpha:1.0];
[picker addSubview:toolBar];
[picker bringSubviewToFront:toolBar];
这里是 doneButtonTapped 方法:
-(void)doneButtonTapped:(UIBarButtonItem *)sender{
NSLog(@"Done button tapped");
picker.hidden = true;
[self.view bringSubviewToFront:txtCity];
[self.view bringSubviewToFront:advancedSearchLine];
[self.view bringSubviewToFront:txtCityLine];
}
我检查了布局调试器,而 运行 应用程序和完成按钮确实位于视图的前面,所以它前面没有任何东西可以阻止它工作。我做错了什么?
您不能将工具栏添加为选取器的子视图 view.create UIView 中的容器将工具栏和选取器添加为子视图。
UIView *inputView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, screenWidth, toolBar.frame.size.height + picker.frame.size.height)];
inputView.backgroundColor = [UIColor clearColor];
[inputView addSubview:picker];
[inputView addSubview:toolBar];