本文主要是介绍textField的键盘监听,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
// 监听键盘的弹出事件
// 创建一个NSNotificationCenter对象。
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
//监听键盘的弹出通知
[center addObserver:self selector:@selector(keyboardWillChangeFrame:) name:UIKeyboardWillChangeFrameNotification object:nil];
- (void)keyboardWillChangeFrame:(NSNotification *)noteInfo
{
// NSLog(@"通知名称: %@", noteInfo.name);
//
// NSLog(@"通知的发布者: %@", noteInfo.object);
//
// NSLog(@"通知的具体内容: %@", noteInfo.userInfo);
// 1. 获取当键盘显示完毕或者隐藏完毕后的Y值
CGRect rectEnd = [noteInfo.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue];
CGFloat keyboardY = rectEnd.origin.y;
// 用键盘的Y值减去屏幕的高度计算出平移的值
// 1. 如果是键盘弹出事件, 那么计算出的值就是负的键盘的高度
// 2. 如果是键盘的隐藏事件, 那么计算出的值就是零, 因为键盘在隐藏以后, 键盘的Y值就等于屏幕的高度。
CGFloat tranformValue = keyboardY - self.view.frame.size.height;
[UIView animateWithDuration:0.25 animations:^{
self.view.transform = CGAffineTransformMakeTranslation(0, tranformValue);
}];
}
/**
注意: 监听通知以后一定要在监听通知的对象的dealloc方法中移除监听
*/
- (void)dealloc{
// 移除通知
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{
// 把键盘叫回去, 思路: 让控制器所管理的UIView结束编辑
[self.view endEditing:YES];
}
这篇关于textField的键盘监听的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!