2012-10-27 88 views
0

我得到的是一個TableView,它使用Prototype Cells和一個提供dataSource的數組 - 依賴於數據源,我使用特定的Table View Cell標識符來構建細胞。 (請糾正我,如果我在這裏做錯了什麼 - 我是iOS開發新手,並且正在儘可能尋找最佳實踐:)當UITextField在TableView中時如何隱藏鍵盤單元格

無論如何,我在Storyboard中創建的一個Table View Cell有一個UITextField 。我在故事板GUI中設置了返回鍵設置爲'完成'並且'自動啓用返回鍵'被選中。然後我去了我的控制器和使用下面的代碼:

- (BOOL)textFieldShouldReturn:(UITextField *)textField { 
    [textField resignFirstResponder]; 
    return YES; 
} 
- (void)textFieldDidEndEditing:(UITextField *)textField{ 
    [textField resignFirstResponder]; 
    NSLog(@"finished change..."); 
} 

我也得到了一個「編輯真的結束」事件鏈接到我的控制器,編碼輸出到NSLog的。

當我點擊返回或完成時,日誌輸出放置在textFieldDidEndEditing和我的事件函數中的文本。但是,當我選擇一個表格單元格時,或者開始移動滑塊時,什麼都不會發生 - 這意味着鍵盤仍然在屏幕上。

有沒有辦法解決這個問題?

此外,雖然我一直在研究這個Prototype Cells,但對於我所需要的,它似乎相當費力。基本上所有我需要是一個基本表以允許用戶編輯一些設置,因此將有:

2文本框可以被編輯, 1滑塊, 2開關

我放置所有這一切在一個靜態的UITableView,但它沒有出現 - 這是由於這種類型的表需要一個UITableViewController的限制。有沒有解決的辦法?

對不起,長的帖子 - 我仍然讓我周圍的iOS開發的頭,但我很享受它爲止:)

任何幫助將不勝感激。

回答

4

我通常保持一個ivar來跟蹤。它可以讓我方便地根據各種事件解僱鍵盤:

@interface ViewController() { 
    UITextField *_textFieldBeingEdited; 
} 
@end 

- (void)textFieldDidBeginEditing:(UITextField *)textField { 
    _textFieldBeingEdited = textField; 
} 

- (void)textFieldDidEndEditing:(UITextField *)textField{ 
    // no need to resignFirstResponder here. 
    _textFieldBeingEdited = nil; 
} 

- (void)tableView:(UITableView *)tableView 
      didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    if (_textFieldBeingEdited) { 
    [_textFieldBeingEdited resignFirstResponder]; 
    } 
    ... 
} 
+0

謝謝你的工作。關於我的第二點,我能以某種方式放置一個靜態TableView而不需要有一個UITableViewController? – user1197220

+0

使用「UITableViewController」有什麼問題? – Mundi

+0

當前正在使用實用程序模板 - 是否可以以某種方式將UITableViewController集成到FlipSide上?我創建的應用程序是非常基本的,只需要一個主視圖和flipside視圖設置 – user1197220

相關問題