2010-10-22 62 views
1

我有一個3 UITextFields添加到單元格的內容視圖(每節1行)的表。我插入了第四部分,以便可以將特定字段滾動到鍵盤上方。iPad不退出響應者

我有問題(僅在iPad上)是當其中一個文本字段具有firstResponder時,它不會在用戶點擊另一個字段時放棄它。 ipad上的響應鏈是否存在差異?在我的視圖控制器的波紋管代碼UITextFieldDelegate - textFieldShouldEndEditing在接觸另一個字段時不會被調用。按完成按鈕按預期工作(除非另一個字段已被觸摸)。

下面的代碼有什麼問題嗎?

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { 
    if (!_editing++) { 
     [self.tableView insertSections:[NSIndexSet indexSetWithIndex:4] withRowAnimation:UITableViewRowAnimationNone]; 
    } 

    // scroll to section number in the text fields tag 
    [self.tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:textField.tag] atScrollPosition:UITableViewScrollPositionTop animated:YES]; 

    return YES; 
} 

- (void) textFieldDidBeginEditing:(UITextField *)textField { 
    self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:textField action:@selector(resignFirstResponder)] autorelease]; 
} 

- (BOOL)textFieldShouldEndEditing:(UITextField *)textField { 
    if (_editing-- == 1) { 
     // 
     [self.tableView deleteSections:[NSIndexSet indexSetWithIndex:4] withRowAnimation:UITableViewRowAnimationNone]; 
    } 

    self.navigationItem.rightBarButtonItem = nil; 

    // do something with the text here... 

    return YES; 
} 
+0

嗯,我會寫(!(--_編輯))的一致性,但除此之外,代碼在iPhone上工作,... – jv42 2010-10-22 11:21:41

+0

是的,它的odd..app只爲iPhone開發界面也是如此,所以ipad在「iphone模式」下。已經通過在textFieldShouldBeginEditing中強制退出當前的第一響應者來管理解決方法...但這並不完美(鍵盤在切換字段時沒有保持不動 - 需要按兩次字段才能更改) – 2010-10-22 12:13:17

回答

0

OK,我已經找到了滿意的解決辦法,似乎允許運行的循環,以動畫去除部分解決問題的請求之前執行。我想這是一個蘋果錯誤?對於擔心這個問題的其他人 - 我在iPad上運行iOS3.2.1。

- (BOOL)textFieldShouldEndEditing:(UITextField *)textField { 
    if (_editing == 1) { 
     [self performSelector:@selector(hideFinalSection) withObject:nil afterDelay:0.0f]; 
    } 
    else { 
     _editing--; 
    } 

    self.navigationItem.rightBarButtonItem = nil; 

     // do something with the text here... 

    return YES; 
} 

- (void) hideFinalSection { 
    if (!(--_editing)) { 
     [self.tableView deleteSections:[NSIndexSet indexSetWithIndex:4] withRowAnimation:UITableViewRowAnimationNone]; 
    } 
} 
相關問題