2012-11-19 70 views
0

我有一個靜態UITableView,其中包含一些UITextField s。當用戶在任何文本字段之外輕擊時,我想要關閉鍵盤。UITextField:強制resignFirstResponder在其外部輕擊時

在我的UIViewController的頂層是UITableViewUITabBarItem。我相信我也必須處理狀態欄上的水龍頭。

我不確定我應該如何爲觸摸註冊他們(這樣我可以強迫任何文本字段的調用resignFirstResponder

我想我可能要處理UIResponder

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event

爲表視圖和標籤欄項目,但他們都不是UIControl太我不能使用

- (void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents

UIWindow也是UIResponder但我再次似乎無法獲得觸摸事件。

任何幫助將不勝感激, CS

回答

0

當你有一個靜態的UITableView它「吃」觸摸事件。所以我所做的是通過繼承UITableView,然後添加一個報告觸摸事件的委託。

0

如果你在一個文本字段我想補充觸摸到開始它屬於和不喜歡這樣的...的UIViewController

- (void)touchesBegan ... cant remember full name 
{ 
    if ([touches count] > 1) { 
     return; 
    } 

    UITouch *touch = [touches anyObject]; 

    CGPoint touchPoint = [touch locationInView self.view]; 

    if (!CGRectContainsPoint(self.textField.frame, touchPoint)) { 
     //touch originated outside textField. 

     [textField resignFirstResponder]; 
    } 
} 

如果您有多個文本字段,那麼只需在if中爲它們中的每個執行CGRectContainsPoint檢查。

+0

Fogmeister,謝謝你的回答。我已經有' - (void)touchesBegan:(NSSet *)在我的'UIViewController'子類中觸及了事件:(UIEvent *)事件,並且不管我在哪裏點擊都不會被調用。 (我有一個'NSLog()'在那裏,並有一個斷點設置。 – RobertJoseph

相關問題