1、點(diǎn)擊控制器的view退出鍵盤
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[self.view endEditing:YES]; // 結(jié)束編輯饼疙,就會(huì)自動(dòng)退出鍵盤
}
2. 評(píng)論工具欄隨鍵盤高度上升而上升,隨鍵盤消失而回原底部位置
Snip20151027_4.png
1. 分析界面:有一個(gè)tableView,我們想將該控制器用UITableViewController處理涝缝,但是,再觀察可得譬重,發(fā)現(xiàn)不能如此拒逮,為什么呢?
- 不能用tableViewVC臀规,而選擇UIViewController滩援,因?yàn)椋ぞ邫谝笠恢憋@示在底部塔嬉,但是表格控制器滾動(dòng)玩徊,工具欄也會(huì)隨著滾動(dòng)的
- 因?yàn)榈撞坑幸粋€(gè)評(píng)論工具欄(上面有一個(gè)UITextView)租悄,UITextView叫出鍵盤后,要求鍵盤彈出而工具欄要往上移動(dòng)恩袱,隨著鍵盤的消息而顯示在控制器view的最底部泣棋。
- 選擇UIViewController,在控制器的view上添加兩個(gè)子控件:tableView與工具欄UIView
2. 代碼 實(shí)現(xiàn)
- 1.自定義控制器JPViewController畔塔,通過xib布局潭辈,繼承UIViewController
- 2.通知,監(jiān)聽鍵盤frame的通知 ->UIKeyboardWillChangeFrameNotification
- (void)viewDidLoad {
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillChangeFrame:) name:UIKeyboardWillChangeFrameNotification object:nil];
}
- 3.監(jiān)聽了通知澈吨,那么就的最后在dealloc方法中把敢,移除通知監(jiān)聽
- (void)dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
- 4.監(jiān)聽到鍵盤改變了,調(diào)整工具欄的約束
#pragma mark - 監(jiān)聽
- (void)keyboardWillChangeFrame:(NSNotification *)note
{
// 工具條平移的距離 == 屏幕高度 - 鍵盤最終的Y值
self.bottomSpace.constant = JPScreenH - [note.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue].origin.y;
CGFloat duration = [note.userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue];
[UIView animateWithDuration:duration animations:^{
[self.view layoutIfNeeded]; // 修改約束谅辣,執(zhí)行動(dòng)畫修赞,必須重寫調(diào)整
}];
}