[转]textField键盘显示问题


http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/TextandWeb/TextandWeb.html



Listing 5-1  Handling the keyboard notifications



// Call this method somewhere in your view controller setup code.


- (void)registerForKeyboardNotifications


{


    [[NSNotificationCenter defaultCenter] addObserver:self


            selector:@selector(keyboardWasShown:)


            name:UIKeyboardDidShowNotification object:nil];


 


    [[NSNotificationCenter defaultCenter] addObserver:self


            selector:@selector(keyboardWasHidden:)


            name:UIKeyboardDidHideNotification object:nil];


}


 


// Called when the UIKeyboardDidShowNotification is sent.


- (void)keyboardWasShown:(NSNotification*)aNotification


{


    if (keyboardShown)


        return;


 


    NSDictionary* info = [aNotification userInfo];


 


    // Get the size of the keyboard.


    NSValue* aValue = [info objectForKey:UIKeyboardBoundsUserInfoKey];


    CGSize keyboardSize = [aValue CGRectValue].size;


 


    // Resize the scroll view (which is the root view of the window)


    CGRect viewFrame = [scrollView frame];


    viewFrame.size.height -= keyboardSize.height;


    scrollView.frame = viewFrame;


 


    // Scroll the active text field into view.


    CGRect textFieldRect = [activeField frame];


    [scrollView scrollRectToVisible:textFieldRect animated:YES];


 


    keyboardShown = YES;


}


 


 


// Called when the UIKeyboardDidHideNotification is sent


- (void)keyboardWasHidden:(NSNotification*)aNotification


{


    NSDictionary* info = [aNotification userInfo];


 


    // Get the size of the keyboard.


    NSValue* aValue = [info objectForKey:UIKeyboardBoundsUserInfoKey];


    CGSize keyboardSize = [aValue CGRectValue].size;


 


    // Reset the height of the scroll view to its original value


    CGRect viewFrame = [scrollView frame];


    viewFrame.size.height += keyboardSize.height;


    scrollView.frame = viewFrame;


 


    keyboardShown = NO;


}
posted @ 2011-11-26 10:24  el.  阅读(126)  评论(0编辑  收藏  举报