2011-08-07 39 views
0

我看過很多關於如何在按下回車鍵或按下某個按鈕時隱藏鍵盤的示例。如何在不按回車鍵或任何其他可控按鈕的情況下關閉鍵盤

但我的情況是不同的:我如何解除鍵盤只是在TextField外單擊?試想一下,用戶已經選定一個文本字段輸入一些文字...但他感到遺憾,只是想隱藏鍵盤,並繼續觀看屏幕中的文本字段

攻之前,我沒有找到如何做到這一點

在此先感謝

佩德羅

回答

1

實施的touchesBegan和辭職的文本字段作爲第一個響應者。

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    [activeTextField resignFirstResponder]; 
} 

如果您有多個文本字段,則應該在activeTextField實例變量中存儲一個指向當前活動的指針的指針。要做到這一點,你就必須到自爲代表的所有文本字段,並實現該委託方法:

- (void)textFieldDidBeginEditing:(UITextField *)textField 
{ 
    activeTextField = textField; 
} 
+0

非常感謝......這正是我所需要的 – ElPiter

0

可以rasignfirstresponder觸摸了外面事件。
否則,看看這個答案
iphone, dismiss keyboard when touching outside of UITextField

+0

這不起作用,因爲文本字段不會接收觸摸事件,除非它們來自_inside_文本字段。否則,其他一些視圖將獲得觸摸事件。當你開始按下一個按鈕,然後通過將手指從其上拉開來取消時,向外觸摸即可。 –

+0

你說得對。我學到了一些新東西。謝謝! – pasine

1

試試這個代碼。

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent*)event 
{ 
UITouch *touch = [touches anyObject]; 
if([touch view] == self.view) 
    [textField resignFirstResponder]; 
} 
+1

真的沒有理由在這裏檢查if([touch view] == self.view)'因爲他希望在文本字段之外的所有觸摸都可以解除鍵盤,並且如果用戶觸摸了文本字段(或處理觸摸本身的其他元素),則不會調用此方法。 –

相關問題