經過向 NSNotificationCenter 註冊觀察者監聽鍵盤事件,根據鍵盤狀態,從而動態調整 UITextView的 edgeInsetsapp
#import "ViewController.h" @interface ViewController () @property (nonatomic, strong) UITextView *myTextView; @end @implementation ViewController /* 1 */ //- (void)viewDidLoad{ // [super viewDidLoad]; // // self.myTextView = [[UITextView alloc] initWithFrame:self.view.bounds]; // self.myTextView.text = @"Some text here..."; // self.myTextView.contentInset = UIEdgeInsetsMake(10.0f, 0.0f, 0.0f, 0.0f); // self.myTextView.font = [UIFont systemFontOfSize:16.0f]; // [self.view addSubview:self.myTextView]; // //} /* 2 */ - (void) handleKeyboardDidShow:(NSNotification *)paramNotification{ /* Get the frame of the keyboard */ NSValue *keyboardRectAsObject = [[paramNotification userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey]; /* Place it in a CGRect */ CGRect keyboardRect = CGRectZero; [keyboardRectAsObject getValue:&keyboardRect]; /* Give a bottom margin to our text view that makes it reach to the top of the keyboard */ self.myTextView.contentInset = UIEdgeInsetsMake(0.0f, 0.0f, keyboardRect.size.height, 0.0f); } - (void) handleKeyboardWillHide:(NSNotification *)paramNotification{ /* Make the text view as big as the whole view again */ self.myTextView.contentInset = UIEdgeInsetsZero; } - (void) viewWillAppear:(BOOL)paramAnimated{ [super viewWillAppear:paramAnimated]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleKeyboardDidShow:) name:UIKeyboardDidShowNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleKeyboardWillHide:) name:UIKeyboardWillHideNotification object:nil]; self.myTextView = [[UITextView alloc] initWithFrame:self.view.bounds]; self.myTextView.text = @"Some text here..."; self.myTextView.font = [UIFont systemFontOfSize:16.0f]; [self.view addSubview:self.myTextView]; } - (void) viewWillDisappear:(BOOL)paramAnimated{ [super viewWillDisappear:paramAnimated]; [[NSNotificationCenter defaultCenter] removeObserver:self]; } @end