UIKeyboard 类的一些属性和使用

来源:互联网 发布:elementary os知乎 编辑:程序博客网 时间:2024/06/10 09:11

偷点懒.不想翻译. 这里记录一下.


// Each notification includes a nil object and a userInfo dictionary containing the// begining and ending keyboard frame in screen coordinates. Use the various UIView and// UIWindow convertRect facilities to get the frame in the desired coordinate system.// Animation key/value pairs are only available for the "will" family of notification.UIKIT_EXTERN NSString *const UIKeyboardWillShowNotification;UIKIT_EXTERN NSString *const UIKeyboardDidShowNotification; UIKIT_EXTERN NSString *const UIKeyboardWillHideNotification; UIKIT_EXTERN NSString *const UIKeyboardDidHideNotification;UIKIT_EXTERN NSString *const UIKeyboardFrameBeginUserInfoKey        NS_AVAILABLE_IOS(3_2); // NSValue of CGRectUIKIT_EXTERN NSString *const UIKeyboardFrameEndUserInfoKey          NS_AVAILABLE_IOS(3_2); // NSValue of CGRectUIKIT_EXTERN NSString *const UIKeyboardAnimationDurationUserInfoKey NS_AVAILABLE_IOS(3_0); // NSNumber of doubleUIKIT_EXTERN NSString *const UIKeyboardAnimationCurveUserInfoKey    NS_AVAILABLE_IOS(3_0); // NSNumber of NSUInteger (UIViewAnimationCurve)// Like the standard keyboard notifications above, these additional notifications include// a nil object and begin/end frames of the keyboard in screen coordinates in the userInfo dictionary.UIKIT_EXTERN NSString *const UIKeyboardWillChangeFrameNotification  NS_AVAILABLE_IOS(5_0);UIKIT_EXTERN NSString *const UIKeyboardDidChangeFrameNotification   NS_AVAILABLE_IOS(5_0);// These keys are superseded by UIKeyboardFrameBeginUserInfoKey and UIKeyboardFrameEndUserInfoKey.UIKIT_EXTERN NSString *const UIKeyboardCenterBeginUserInfoKey   NS_DEPRECATED_IOS(2_0, 3_2);UIKIT_EXTERN NSString *const UIKeyboardCenterEndUserInfoKey     NS_DEPRECATED_IOS(2_0, 3_2);UIKIT_EXTERN NSString *const UIKeyboardBoundsUserInfoKey        NS_DEPRECATED_IOS(2_0, 3_2);

使用代码:

- (void)keyboardWillShow:(NSNotification *)notification {        /*     Reduce the size of the text view so that it's not obscured by the keyboard.     Animate the resize so that it's in sync with the appearance of the keyboard.     */     NSDictionary *userInfo = [notification userInfo];        // Get the origin of the keyboard when it's displayed.    NSValue* aValue = [userInfo objectForKey:UIKeyboardFrameEndUserInfoKey];     // Get the top of the keyboard as the y coordinate of its origin in self's view's coordinate system. The bottom of the text view's frame should align with the top of the keyboard's final position.    CGRect keyboardRect = [aValue CGRectValue];    keyboardRect = [self.view convertRect:keyboardRect fromView:nil];        CGFloat keyboardTop = keyboardRect.origin.y;    CGRect newTextViewFrame = self.view.bounds;    newTextViewFrame.size.height = keyboardTop - self.view.bounds.origin.y;        // Get the duration of the animation.    NSValue *animationDurationValue = [userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey];    NSTimeInterval animationDuration;    [animationDurationValue getValue:&animationDuration];        // Animate the resize of the text view's frame in sync with the keyboard's appearance.    [UIView beginAnimations:nil context:NULL];    [UIView setAnimationDuration:animationDuration];        textView.frame = newTextViewFrame;     [UIView commitAnimations];}  - (void)keyboardWillHide:(NSNotification *)notification {        NSDictionary* userInfo = [notification userInfo];        /*     Restore the size of the text view (fill self's view).     Animate the resize so that it's in sync with the disappearance of the keyboard.     */    NSValue *animationDurationValue = [userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey];    NSTimeInterval animationDuration;    [animationDurationValue getValue:&animationDuration];        [UIView beginAnimations:nil context:NULL];    [UIView setAnimationDuration:animationDuration];        textView.frame = self.view.bounds;        [UIView commitAnimations];}


原创粉丝点击