2014-01-13 71 views
1

我有一段代碼,其中的UITableView委託。我希望用於編輯表格中的行的功能。當用戶點擊一行時,打開shouldChangeTextInRange。當前行授權UITableView隱藏行

通過以下代碼,我可以控制該行的編輯。這工作正常。

textView.text = ((ANFreeEditCell*)[self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:[self.tableView indexPathForCell:cell].row inSection:0]]).getTekst; 

也可能表中的底部行之一被編輯。在這種情況下,鍵盤窗口放置在表格頂部,self.tableView indexPathForCell:cell].row返回零行(0)。

didSelectRowAtIndexPath永遠不會被調用。

如何訪問這些行?

回答

1

您可以設置表格的內容偏移量以使其以編程方式滾動。註冊一個UIKeyboardDidShowNotification並滾動表格,以便正在編輯的行不會隱藏在鍵盤後面。我沒有測試過,但我相信它應該可以工作

希望這會有所幫助。

考慮西蒙的建議

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didShowKeyBoard:) name:UIKeyboardDidShowNotification object:nil]; 

-(void)didShowKeyBoard:(NSNotification *)notif 
{ 
    float offset = //Value through which you need the tableview to scroll 
    CGRect cellRect = [self.tableView rectForRowAtIndexPath:_editCellIndexPath]; 
    CGPoint scrollPoint = CGPointMake(0.0, cellRect.origin.y - (offset-self.tableView.contentOffset.y)); 
    [self.tableView setContentOffset:scrollPoint animated:YES]; 
} 
+0

...代碼示例可能不錯? –

+0

這看起來很有希望。謝謝! – Vincent

0

您需要添加的keyboard notificationobserver你的方法裏面可以說viewDidLoad裏面包含這兩NSNotification它將調用時keyboard會隱藏和顯示: -

[[NSNotificationCenter defaultCenter] addObserver:self 
    selector:@selector(keyboardWillHide:) 
    name:UIKeyboardWillHideNotification  
    object:self.view.window]; 

[[NSNotificationCenter defaultCenter] addObserver:self 
    selector:@selector(keyboardWillShow:) 
    name:UIKeyboardWillShowNotification 
    object:self.view.window]; 

現在後實施鍵盤隱藏和顯示相應的兩種方法,然後只是設置你的tableview的框架取決於你的V大小。例如。

- (void)keyboardWillHide:(NSNotification *)notification 
{ 
    //return it to its original position 
    [self.tableView setFrame:CGRectMake(3, 403, 695, 353)]; 
} 

- (void)keyboardWillShow:(NSNotification *)notification 
{ 
    //Or where ever you want the tableView to go 
    [self.tableView setFrame:CGRectMake(3, 65, 695, 353)]; 
} 
+0

你不需要在整個地方留下評論,告訴人們看看你的答案。這不是很優雅。 – Abizern

+0

感謝您的回覆。不幸的是,這並不能回答我的問題,它與問題無關。問題是如何知道哪一行正在編輯。 – Vincent