在键盘出现之前获得键盘高度?

时间:2016-01-19 16:29:29

标签: ios objective-c user-interface keyboard

有没有办法在键盘出现之前获得键盘高度?

我想创建一个类似于instagram的登录屏幕,其中文本字段放置在键盘正下方的位置(如截图所示)。

textfield not selected textfield selected

感谢您的任何建议。

2 个答案:

答案 0 :(得分:1)

我打赌我知道Instagram是如何做到的。

当您第一次启动Instagram时,它会显示带有键盘的用户名和密码屏幕(您的第二个屏幕截图)。由于它在启动时会立即显示键盘,我打赌它会重新定位登录屏幕,然后将键盘高度保存在<html> <head> <!-- google api --> <meta name="google-signin-client_id" content="xxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com"> <meta name="google-signin-scope" content="email"> </head> <body> <div id="google-signin"></div> <script> function signOut() { var auth2 = gapi.auth2.getAuthInstance(); auth2.signOut().then(function () { console.log('User signed out.'); }); function onGoogleSuccess(googleUser) { // get the token var id_token = googleUser.getAuthResponse().id_token; // console.log('Logged in as: ' + googleUser.getBasicProfile().getName()); } function onGoogleFailure(error) { console.log(error); } function renderButton() { gapi.signin2.render('google-signin', { 'scope': 'https://www.googleapis.com/auth/plus.login', 'width': 242, 'height': 56, 'longtitle': true, 'theme': 'dark', 'onsuccess': onGoogleSuccess, 'onfailure': onGoogleFailure }); } </script> </body> </html> 。可能你可以通过安装不同高度的不同键盘进行测试。

答案 1 :(得分:0)

Instagram必须使用自定义键盘,请在此处查看如何实现自己的键盘(https://developer.apple.com/library/ios/documentation/General/Conceptual/ExtensibilityPG/Keyboard.html)。它的高度是在文本视图后计算的。

  

要调整自定义键盘的高度,请更改其主视图的高度约束。以下代码行显示了如何定义和添加此类约束:

CGFloat _expandedHeight = 500;
NSLayoutConstraint *_heightConstraint = 
    [NSLayoutConstraint constraintWithItem: self.view 
                                 attribute: NSLayoutAttributeHeight 
                                 relatedBy: NSLayoutRelationEqual 
                                    toItem: nil 
                                 attribute: NSLayoutAttributeNotAnAttribute 
                                multiplier: 0.0 
                                  constant: _expandedHeight];
[self.view addConstraint: _heightConstraint];