2012-06-18 62 views
2

我有三個UITableViewCell子類。我將這些顯示在視圖控制器的表格視圖中。我有,在視圖控制器中,爲tableView返回nil:willSelectRowAtIndexPath:因爲我想在我的兩個UITableViewCell子類中的UITextFields獲得焦點併成爲第一響應者。使自定義UIView成爲第一響應者在自定義UITableViewCell

對於第三個UITableViewCell子類,我有一個自定義的UIView子類,它包含一個UIWebView。目前在UIWebView中加載的HTML內容中的div是一行高。我之前將div高度設置爲100%,但發現滾動開始動作。如果我點擊div鍵盤出現。但是,如果用戶點擊此自定義UITableViewCell中的其他位置,則未選擇UIWebView div,並且鍵盤不會出現。

如何讓我的自定義UITableViewCell或自定義UIView子類成爲第一響應者?還是我以錯誤的方式去做這件事?

回答

1

我相信你會這樣做是錯誤的。返回零爲tableView:willSelectRowAtIndexPath:將不會真正幫助你的原因在這裏。

相反,你有幾個選項。首先,您可以在填充整個視圖的表格單元格中的文本字段後面創建一個UIButton,然後對其進行響應並告訴文本字段變爲活動狀態。像這樣:

線你的UITableViewCell子類中的按鈕:

[self.button addTarget:self action:@selector(handleTouch) forControlEvents:UIControlEventTouchUpInside]; 

將焦點設置在文本字段觸摸時:

- (void)handleTouch 
{ 
    [self.textField becomeFirstResponder]; 
} 

另一種選擇,和一個我不太喜歡,是處理委託方法中單元格的選擇,並告訴單元格的文本字段變爲活動狀態。像這樣:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    MyCustomCellSubclass *cell = [tableView cellForRowAtIndexPath:indexPath]; 
    [cell.textField becomeFirstResponder]; 
} 

在其中當然,你需要一個textField財產爲了做到這一點添加到您的MyCustomCellSubclass

希望這會有所幫助!