2014-09-10 65 views
1

我的UIPicker視圖中填充了選擇選項。我選擇他們並單擊但UIViewPicker不關閉。我如何關閉它或至少開啓事件以便我可以用編程方式隱藏它?IOS8。在選擇時關閉UIPickerView點擊swift

我看着UIPickerViewDelegate,但還沒有找到任何合適的方法,不會執行項目選擇,但只有當我點擊選定的項目。

感謝您的幫助!

回答

0

使用UIPickerView像波紋管的委託方法..

  • (無效)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger的)行inComponent:(NSInteger的)分量{

    yourTextField.text = [yourArray objectAtIndex:row]; 
    thePickerView.hidden = YES; 
    

    }

更新

您可以添加一個UITapGestureRecognizer到UIPickerView:

UITapGestureRecognizer * tapGR = [UITapGestureRecognizer頁頭] initWithTarget:自 動作:@selector(pickerViewTapped]。 [pickerView addGestureRecognizer:tapGR];

然後:

  • (無效)pickerViewTapped { //關閉該選擇器。 }
+1

選擇發生變化時會執行此操作。我需要在我實際點擊所選項目時執行的方法。 – 2014-09-11 07:14:41

+0

@WildGoat您只能在選取器視圖中更改選擇。你如何點擊選擇器視圖? – Ramesh 2014-09-11 08:45:23

+1

是的,你旋轉和改變選擇視圖中的選項,但只要你找到所需的選項,你所做的就是點擊它,然後選擇器視圖消失。如果我把它放在pickerView方法中,它會隱藏它,然後在更改完成後立即點擊。你明白我的意思了嗎? – 2014-09-11 12:16:09

1

你可以使選擇器可見,一旦使用textFieldDidBeginEditing功能在文本字段的用戶點擊,然後隱藏使用didSelectRow功能...

我還建議你添加的touchesBegan功能來隱藏它,如果用戶觸摸選擇器視圖之外的屏幕的任何部分。

override func touchesBegan(touches: NSSet, withEvent event: UIEvent) { 

     myPicker.hidden = true 

    } 

我當然假設你已經做了所有需要的數據源和委託的UIPickerView鏈接和功能的...

0

在didSelectRow方法只在互動結束後加入這一行:

self.view.endEditing(true)