目录:
1.IOS禁止横屏
2.对键盘的隐藏——点击空白处隐藏、点击return键隐藏、
3.键盘出现时,后面的视图整体上移的方法
1.IOS禁止横屏
在AppDelegate中增加,这个方法可以禁止横屏
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
return UIInterfaceOrientationMaskPortrait;
}
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
return UIInterfaceOrientationMaskPortrait;
}
点击键盘return键隐藏键盘
2.1在需要实现的控制器中实现代理<UITextFieldDelegate>
2.2需要使用该功能的UITextField处,委托代理。记住一定是要在实例化之前【这一步很重要】
2.3实现代理方法
#pragma mark TextField代理
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}
点击空白处隐藏键盘、
#pragma mark view代理 点击空白区域是触发
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
//关闭键盘
[self.username resignFirstResponder];
[self.password resignFirstResponder];
}
3.键盘出现时,后面的视图整体上移的方法
- (void)viewDidLoad
{
//[步骤1/3]获取键盘的监听广播
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyboardWillAppear2:) name:UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyboardWillDisappear2:) name:UIKeyboardWillHideNotification object:nil];
}
#pragma mark 键盘 高度的计算
-(CGFloat)keyboardEndingFrameHeight:(NSDictionary *)userInfo//计算键盘的高度
{
// 传入的(NSDictionary *)userInfo用于存放键盘的各种信息,其中UIKeyboardFrameEndUserInfoKey对应的存放键盘的尺寸信息,以CGRect形式取出
CGRect keyboardEndingUncorrectedFrame = [[userInfo objectForKey:UIKeyboardFrameEndUserInfoKey]CGRectValue];
CGRect keyboardEndingFrame = [self.view convertRect:keyboardEndingUncorrectedFrame fromView:nil];
return keyboardEndingFrame.size.height;
}
#pragma mark [步骤2/3]根据键盘高度将当前视图向上滚动同样高度。
-(void)keyboardWillAppear2:(NSNotification *)notification
{
CGRect currentFrame = self.view.frame;
if (currentFrame.origin.y < 0)//这里弥补了一个bug:当两个TextField来回切换的时候,软键盘一直都在,所以会重复调用keyboardWillAppear函数,从而导致currentFrame.origin.y = currentFrame.origin.y - keyBoardH * 0.4;执行,而此时的currentFrame只就累加了,所以必须清零
{
currentFrame.origin.y = 0;
self.view.frame = currentFrame;
}
CGFloat keyBoardH = [self keyboardEndingFrameHeight:[notification userInfo]];
currentFrame.origin.y = currentFrame.origin.y - keyBoardH * 0.4;
self.view.frame = currentFrame;
}
#pragma mark [步骤3/3]当键盘消失后,视图需要恢复原状。
-(void)keyboardWillDisappear2:(NSNotification *)notification
{
CGRect currentFrame = self.view.frame;
CGFloat keyBoardH = [self keyboardEndingFrameHeight:[notification userInfo]];
currentFrame.origin.y = currentFrame.origin.y + keyBoardH * 0.4;
self.view.frame = currentFrame;
//下面if语句的原理和keyboardWillAppear
if (currentFrame.origin.y < 0)
{
currentFrame.origin.y = 0;
self.view.frame = currentFrame;
}
}