解决第三方键盘的高度带来的问题。

来源:互联网 发布:linux 内核是什么 编辑:程序博客网 时间:2024/05/17 07:43

也可以用这个,如果这个方法不可用的话,跳过看下面的方法

//获取键盘的高度

NSDictionary*userInfo = [aNotificationuserInfo];

NSValue*aValue = [userInfoobjectForKey:UIKeyboardFrameEndUserInfoKey];

CGRectkeyboardRect = [aValueCGRectValue];

//键盘的高度和键盘的Y的坐标

CGFloatYKeyboard = keyboardRect.origin.y;

CGFloatheight = keyboardRect.size.height;


第一种方法


直接不用第三方,就用系统的

第二种方法

//获取键盘的高度



例如:搜狗键盘的高度是三次才能获取到正确的高度,所以用这个

这个是获取第三次高度的。。。

- (void)keyboardWillShow:(NSNotification *)notification {

CGFloat curkeyBoardHeight = [[[notification userInfo] objectForKey:@"UIKeyboardBoundsUserInfoKey"] CGRectValue].size.height;

CGRect begin = [[[notification userInfo] objectForKey:@"UIKeyboardFrameBeginUserInfoKey"] CGRectValue];

CGRect end = [[[notification userInfo] objectForKey:@"UIKeyboardFrameEndUserInfoKey"] CGRectValue];

// 第三方键盘回调三次问题,监听仅执行最后一次

if(begin.size.height>0 && (begin.origin.y-end.origin.y>0)){

keyBoardHeight = curkeyBoardHeight;

然后根据你获取的keyBoardHeight来进行视图的操作、、

}

}

 最后,我就只知道这两种。还有一个是第三方,功能很强大,但是没用过,这个差不多也是可以用的。还是给你们贴出来吧。


这个库的下载地址:https://github.com/hackiftekhar/IQKeyboardManager

这个库是一个单例,它一旦生效,全项目任何界面都有效。让它生效的代码可以写在任意位置,我写在AppDelegate里

- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions 

{     

  IQKeyboardManager *manager = [IQKeyboardManager sharedManager];

    manager.enable=YES;  

  manager.shouldResignOnTouchOutside=YES;  

  manager.shouldToolbarUsesTextFieldTintColor=YES;  

  manager.enableAutoToolbar=NO;returnYES;

}

enable控制整个功能是否启用。

shouldResignOnTouchOutside控制点击背景是否收起键盘。

shouldToolbarUsesTextFieldTintColor 控制键盘上的工具条文字颜色是否用户自定义。

enableAutoToolbar控制是否显示键盘上的工具条。

使用方法,代码如下:



设置returnKeyHandler,可以点击键盘上的next键,自动跳到下一个输入框。最后一个输入框点击done自动收起键盘。

运行后,可以看到输入框随着键盘的弹出自动上下浮动。点击背景,键盘收起。全自动了。

这个库默认支持UITextField、UITextView、UIWebView、UIScrollView、UITableView、UICollectionView

最后要注意一点,它可以自动计算多个textField之间的先后顺序,排列依据是看addSubView的先后顺序。

0 0
原创粉丝点击