iPad'关闭键盘'按钮不会消除键盘

时间:2011-05-04 19:19:27

标签: ios uikeyboard dismiss

我在横向视图中有一个UITextField,当我按下UIKeyboard视图右下方的“关闭键盘”按钮时,键盘不会消失。有没有办法以编程方式侦听按下此键的时间?或者是否有一个我没看到的连接会使这个键盘消失? 这是iOS 4和XCode 4.谢谢。

3 个答案:

答案 0 :(得分: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文件中设置插座。

我不知道为什么这与键盘行为有关。但我的理论是,响应者链没有链接到窗口,但它需要。

答案 1 :(得分:0)

你需要告诉接受键盘输入的文本字段不再是第一个响应者。

[UITextField resignFirstRepsonder];

答案 2 :(得分: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];
        }
    }
}