2012-12-04 86 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];} 
相關問題