2011-06-09 67 views
2

現在我在UITableViewController中有2個不同的UIPickerView。我只是在點擊表格中的某些單元格時才顯示它們。我試圖做的是每當我接觸採摘者時隱藏拾取器。有沒有一個委託方法或類似的東西來實現這個?我更喜歡將控制器保留爲UITableViewController而不是簡單的UIViewController,因爲我在其中一個單元格中有一個textView,並且在UIViewController中的鍵盤顯示稍微有些過後滾動。在UITableViewController中隱藏UIPickerView而在外面觸摸

在此先感謝。

+0

所以我有完全相同的問題。我知道我該如何解決這個問題。我需要使用與隱藏鍵盤相同的概念,方法是將UIView更改爲UIcontrol以檢測觸摸。對於pickerView來說,由於它後面有一張桌子,所以它在編寫代碼時很痛苦。我只在上面放置一個完成按鈕,並使用[resignFirstResponder]作爲IBAction。 – Legolas 2011-06-09 21:34:12

回答

1

其中一個可能的解決方案是,當一個特定的單元被點擊並且你處理選擇器(呈現選擇器)時,你可以在tableview中插入一個名爲MASK View的視圖。 (使用Frame作爲self.tableview.frame - yourPicker.frame.size.height)。現在,當你永遠得到這一觀點的任何點擊,你可以按照如下

-(void)showMaskView{ 
    if (!viewMaskView) { 
     CGRect viewRect = CGRectMake(0, 0, self.tableView.frame.size.width, self.tableView.frame.size.height - yourPicker.frame.size.height); 
     viewMaskView = [[MaskView alloc] initWithFrame:viewRect]; 
     viewMaskView.delegate = self; 
    } 
    [self.view addSubview:viewMaskView]; 
    [self.view bringSubviewToFront:viewMaskView]; 
} 

-(void)removeMaskView{ 
    if (viewMaskView) { 
     [viewMaskView removeFromSuperview]; 
    } 
    //Remove the Picker 
} 

在MaskView類處理它,你可以操作觸摸如下

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ 
    if(self.delegate && [self.delegate respondsToSelector:@selector(removeMaskView)]) 
     [self.delegate removeMaskView]; 
} 

你可以看到在彩色面具觀點選擇器在圖像中。當點擊時,它會刪除選取器。 enter image description here