iOS应用开发中监听键盘事件的代码实例小结
1.注册监听键盘事件的通知
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillShow:)
name:UIKeyboardWillShowNotification
object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardShow:)
name:UIKeyboardDidShowNotification
object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillHide:)
name:UIKeyboardWillHideNotification
object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardHide:)
name:UIKeyboardDidHideNotification
object:nil];
2.在键盘将要出现和隐藏的回调中,加入动画
- (void)keyboardWillShow:(NSNotification *)notif {
if (self.hidden == YES) {
return;
}
CGRect rect = [[notif.userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
CGFloat y = rect.origin.y;
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.25];
NSArray *subviews = [self subviews];
for (UIView *sub in subviews) {
CGFloat maxY = CGRectGetMaxY(sub.frame);
if (maxY > y - 2) {
sub.center = CGPointMake(CGRectGetWidth(self.frame)/2.0, sub.center.y - maxY + y - 2);
}
}
[UIView commitAnimations];
}
- (void)keyboardShow:(NSNotification *)notif {
if (self.hidden == YES) {
return;
}
}
- (void)keyboardWillHide:(NSNotification *)notif {
if (self.hidden == YES) {
return;
}
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.25];
NSArray *subviews = [self subviews];
for (UIView *sub in subviews) {
if (sub.center.y
sub.center = CGPointMake(CGRectGetWidth(self.frame)/2.0, CGRectGetHeight(self.frame)/2.0);
}
}
[UIView commitAnimations];
}
- (void)keyboardHide:(NSNotification *)notif {
if (self.hidden == YES) {
return;
}
}
3.监听键盘删除键之非代理实现
在UITextField 和 UITextView ,如何监听到删除键。
我看到网上都是用代理监听的,我觉得不靠谱。
其实苹果已经写的很清楚了。
就在他们实现的协议里面~~
NS_CLASS_AVAILABLE_IOS(2_0) @interface UITextView : UIScrollView
@protocol UITextInput
@protocol UIKeyInput
- (BOOL)hasText;
- (void)insertText:(NSString *)text;
- (void)deleteBackward;
@end
-deleteBackward 这个方法就是删除按钮监听。
只要自己写个子类,重写此方法就能监听。
监听键盘事件的整个代码流程,想必大家都看的非常清楚了吧!如果有需要,可以按照爱站技术频道小编的方法来进行。想知道更多关于技术方面的咨询,可以关注我们爱站技术频道网站哦!
相关推荐
-
iOS开发中Quartz2D的使用方法
你了解过Quartz2D吗,它是iOS开发中比较常用的语言,今天技术小编就带你们来看一看iOS开发中Quartz2D的使用方法,相信你们了解完这篇文章后,会对此产生比较浓厚的兴趣。
-
iOS开发中static变量有什么作用
爱站技术频道小编现在来给你们分享下iOS开发中static变量有什么作用的文章,这里提供了三种作用方法给你们参考,有需要这方面知识点的小伙伴随时都可以来参考阅读。
-
iOS开发之圆形排列随机生成的思路
这篇文章主要给大家介绍了iOS开发之圆形排列随机生成的思路,小编在这里提供了详细的实例代码给你们查看,如果有需要,那就来看一看吧,一定能让你有不小的收获。
-
iOS开发中tableView左滑删除的详细介绍
不知道你们对iOS开发中tableView左滑删除的内容有没有兴趣了解下,技术小编在这里提供了详细的操作方法给大家参考,如果有需要,一定要看看下面这篇文章。
-
IOS开发之Socket的详细介绍
这篇文章主要介绍了IOS开发之Socket的详细内容,并给出了一些基本的实现方法,下面我们就来看看这篇文章的具体内容,相信你们了解完后对此有了不一样的认知。