我有一个UIScrollView
,其中有几个UIViews
子视图。在其中一个UIView
我需要创建一个UIButton
,单击它时,UIPickerView
应该出现一个,如果我可以使按钮成为第一响应者,那么通过默认操作UIScrollView
,它将向上滚动以放置UIPickerView
...我有什么办法可以做到这一点?我需要子类UIControl
吗?
问问题
10970 次
3 回答
2
你可以使用这个:
-(void)btnAction{
UITextView* uitextView = [[UITextView alloc] initWithFrame:CGRectMake(0, 0, 1, 1)];
uitextView.inputView = thePickerView;
[self.view addSubview:uitextView];
[uitextView becomeFirstResponder];}
于 2013-10-17T19:02:40.007 回答
1
这是按钮添加,在这种情况下直接在 _scrollView 中,您可以轻松更改它。
UIButton *btn = [[UIButton alloc] init];
// button customization
[btn addTarget:self action:@selector(showPickerView:) forControlEvents:UIControlEventTouchUpInside];
[_scrollView addSubview:btn];
[btn release]; // if non-ARC
之后,您需要实现该showPickerView:
方法
- (void)showPickerView:(UIButton*)sender
{
UIPickerView *picker = [[UIPickerView alloc] init];
picker.tag = 998998;
// picker customization..
[self.view insertSubview:picker aboveSubview:_scrollView];
[picker release]; // if non-ARC
}
这里的重要部分是当从选择器视图中触发关闭/完成按钮时,您必须隐藏选择器,我想到的最简单的方法是
if([self.view viewWithTag:998998] != nil) {
[[self.view viewWithTag:998998] removeFromSuperview]
}
于 2012-12-04T08:53:12.220 回答
0
将 UIPickerView 初始化为 cell.picker = [[UIPickerView alloc] initWithFrame:CGRectZero]; 在一个子类中(无论你想让选择器在点击时出现什么)。然后覆盖该类的 inputView 方法并在该方法中返回 UIPickerView。该方法设置一个自定义输入视图以在对象成为第一响应者时显示。它会像键盘一样为您制作一切动画。要让滚动视图向上滚动,您需要以与键盘相同的方式处理此问题(即通过为滚动视图设置 contentOffset)。你可以在这里找到:苹果文档链接. 从这里开始应该是相当直接的,因为您有通知到对象何时辞去第一响应者并成为第一响应者。只需使用这些通知而不是键盘通知,并使用默认的 UIPickerView 大小而不是键盘。
- (void)initalizeInputView {
self.picker = [[UIPickerView alloc] initWithFrame:CGRectZero];
self.picker.showsSelectionIndicator = YES;
self.picker.autoresizingMask = UIViewAutoresizingFlexibleHeight;
}
- (UIView *)inputView {
return self.picker;
}
于 2013-08-31T20:03:30.683 回答