2012-12-04 56 views
1

我有一个UIScrollView,其中有几个UIViews作为子视图。在其中一个UIView我需要创建一个UIButton,点击其中一个UIPickerView应该出现,如果我可以使该按钮成为第一响应者,那么通过UIScrollView的默认动作,它将向上滚动以创建UIPickerView ...有什么办法可以做到这一点?我需要子类UIControl吗?如何在点击一个UI按钮时显示UIPickerVIew

回答

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] 
} 
0

初始化UIPickerView到cell.picker = [[UIPickerView的alloc] initWithFrame:方法CGRectZero];在一个子类中(以及无论你希望点击时都有选择器出现)。然后通过该类的inputView方法并返回该方法中的UIPickerView。该方法设置一个自定义输入视图,以在对象成为第一个响应者时显示。它会为你的所有动作像键盘一样。为了让scrollview向上滚动,你需要像处理键盘一样处理(这是通过设置scrollView的contentOffset)。你可以在这里找到这个:apple documentation link。从这里开始应该相当简单,因为当对象辞职成为第一响应者并成为第一响应者时,您会收到通知。只需在键盘通知中使用这些通知,并使用默认的UIPickerView大小而不是键盘。

- (void)initalizeInputView { 
    self.picker = [[UIPickerView alloc] initWithFrame:CGRectZero]; 
    self.picker.showsSelectionIndicator = YES; 
    self.picker.autoresizingMask = UIViewAutoresizingFlexibleHeight; 
} 


- (UIView *)inputView { 
     return self.picker; 
} 
2

您可以使用此:

-(void)btnAction{ 
UITextView* uitextView = [[UITextView alloc] initWithFrame:CGRectMake(0, 0, 1, 1)]; 
uitextView.inputView = thePickerView; 
[self.view addSubview:uitextView]; 

[uitextView becomeFirstResponder];} 
相关问题