iPad 'dismiss keyboard' button doesn't dismiss keyboard

后端 未结 3 1097
太阳男子
太阳男子 2020-12-22 12:17

I have a UITextField in a Landscape view, and when I press the \'dismiss keyboard\' button in the lower right of the UIKeyboard view, the keyboard does NOT disappear. Is the

相关标签:
3条回答
  • 2020-12-22 12:48

    To dismiss the keyboard using the dismiss keyboard button you need to implement the delegate method

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

    Alternatively, if you want to dismiss the keyboard by tapping outside of it, use

    -(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 讨论(0)
  • 2020-12-22 12:48

    you need to tell the text field that is accepting the keyboard input to no longer be the first responder.

    [UITextField resignFirstRepsonder];
    
    0 讨论(0)
  • 2020-12-22 12:52

    I had same problem today and I wondered, wy it works in Apple's KeyboardAccessory Sample Code. So I did reverse engineering. The ViewController was not the mistake I made in my case.

    In the implementation of UIApplicationDelegate there is the entry point of application, where root viewcontroller and window will be setup - (void) applicationDidFinishLaunching:(UIApplication *)application. If you forgot to add root viewcontrollers view to window as subview, the dismiss-keyboard-button wouldn't work in any view of your app.

    @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];
    }
    

    Please don't forget to setup the outlets in the main xib file.

    I dont know why this is related to keyboards behavior. But my theory is, that the responder chain is not linked to window, but it needs.

    0 讨论(0)
提交回复
热议问题