2011-05-04 127 views
0

我有一個UITextField在橫向視圖中,當我按下'解僱鍵盤'按鈕在UIKeyboard視圖的右下角,鍵盤不會消失。有沒有辦法以編程方式監聽該按鍵何時被按下?還是有沒有連接,我沒有看到這會使這個鍵盤消失? 這是iOS 4和XCode 4.謝謝。iPad的'解僱鍵盤'按鈕並沒有關閉鍵盤

回答

2

今天我有同樣的問題,我想知道它是否適用於Apple的KeyboardAccessory示例代碼。 所以我做了逆向工程。 ViewController並不是我在我的案例中犯的錯誤。

在UIApplicationDelegate的實現中,有應用程序的入口點,其中根視圖控制器和窗口將被設置爲- (void) applicationDidFinishLaunching:(UIApplication *)application。如果您忘記將作爲子視圖的根視圖控制器視圖添加到窗口,那麼在應用程序的任何視圖中,dismiss-keyboard-button都不起作用。

@class ViewController; 

@interface KeyboardAccessoryAppDelegate : NSObject <UIApplicationDelegate> { 
    UIWindow *window; 
    ViewController *viewController; 
} 

    @property (nonatomic, retain) IBOutlet UIWindow *window; 
    @property (nonatomic, retain) IBOutlet ViewController *viewController; 

@end 

...

- (void)applicationDidFinishLaunching:(UIApplication *)application {  

    [window addSubview:viewController.view]; 
    [window makeKeyAndVisible]; 
} 

請不要忘記設置在主XIB文件的網點。

我不知道爲什麼這與鍵盤行爲有關。但我的理論是,響應者鏈與窗口沒有聯繫,但它需要。

0

您需要告訴接受鍵盤輸入的文本字段不再是第一響應者。

[UITextField resignFirstRepsonder]; 
+0

是的 - 這不是問題。該消息發送時鍵盤消失。問題是,當按下iPad鍵盤右下方的「解除鍵盤」按鈕(看起來像是一個小鍵盤圖標)時,沒有任何反應。而文本字段沒有收到來自該鍵的任何輸入。我真的很想知道我現在是否遇到過錯誤。不過謝謝。 – 2011-05-28 04:18:45

0

要使用關閉鍵盤按鈕關閉該鍵盤需要實現委託方法

- (BOOL)textFieldShouldReturn:(UITextField *)textField 
{ 
    //Check if your text field is first responder, and if it is, have it resign 
} 

另外,如果你想關閉該鍵盤通過點擊它的外部,請

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    for (UIView* view in self.view.subviews) 
    { 
     if ([view isKindOfClass:[UITextField class]]) { 
      [view resignFirstResponder]; 
     } 

     if ([view isKindOfClass:[UITextView class]]) { 
      [view resignFirstResponder]; 
     } 
    } 
} 
+0

謝謝@capt kettch - 我已經在我的代碼中有這個...這裏是一個片段...我有類設置爲UITextField的委託:'@interface SettingsController:UIViewController {... (textField isFirstResponder]) {textField resignFirstResponder];如果([textField isFirstResponder]),那麼在您提到的方法中檢查:' - (BOOL)textFieldShouldReturn :(UITextField *)textField { '所以 - 我認爲事情是正確連接的 - 任何東西似乎都沒有了?再次感謝! – 2011-06-03 04:09:39

+0

我忘了提及,你應該確保你的文本字段的委託設置爲viewcontroller(很可能是self) – 2011-06-21 21:55:59