我正在實現一個UITableView,它包含幾個自定義的UITableViewCells,每個UITableViewCells都包含UITextField。UITextField上的第二次敲擊(在UITableViewCell子類中)意外地關閉了鍵盤
與大多數人希望鍵盤在某些事件中消失不同,我希望它始終顯示。 問題是,第一次點擊UITextField觸發鍵盤出現沒有任何問題。但是一旦我再次點擊它,現在出現的鍵盤現在就消失了。
此外,另一個相關的問題是我不能改變遊標在UITextField中的位置。 一旦我按住UITextField以改變光標的當前位置,放大鏡就會按預期彈出。但是一旦我放開水龍頭,鍵盤立即關閉。
我該如何解決這個問題?
- (void)viewDidLoad
{
...
TagDetailCell *cell1 = [[[NSBundle mainBundle] loadNibNamed:@"TagDetailCellView" owner:self options:nil] lastObject];
TagDetailCell *cell2 = [[[NSBundle mainBundle] loadNibNamed:@"TagDetailCellView" owner:self options:nil] lastObject];
TagDetailCell *cell3 = [[[NSBundle mainBundle] loadNibNamed:@"TagDetailCellView" owner:self options:nil] lastObject];
self.cells=[NSArray arrayWithObjects:cell1, cell2, cell3, nil];
...
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell=[self.cells objectAtIndex:indexPath.row];
cell.selectionStyle=UITableViewCellSelectionStyleNone;
switch (indexPath.row) {
...
((TagDetailCell*)cell).fieldLabel.text= ...;
((TagDetailCell*)cell).fieldValue.clearButtonMode=UITextFieldViewModeWhileEditing;
((TagDetailCell*)cell).fieldValue.text=...;
[((TagDetailCell*)cell).fieldValue addTarget:self action:@selector(textFieldChanged:) forControlEvents:UIControlEventEditingChanged];
...
}
return cell;
}
我沒有實現UITextField的任何代表。我是不是該?
謝謝你提供有用的信息。我以前不知道這件事。但是,即使在'disablesAutomaticKeyboardDismissal'中返回YES,鍵盤仍然會消失。將演示樣式設置爲'UIModalPresentationFormSheet'也沒有幫助。 – 2012-04-09 14:46:54
我試圖確保'disablesAutomaticKeyboardDismissal'被正確調用,但是這個函數根本沒有被調用。任何想法? – 2012-04-09 14:50:53
嘗試將'UITextField'的委託設置到您的視圖控制器。 – Gobot 2012-04-09 14:55:40