How can one enable keyboard like in iMessages/FB M

2020-02-04 22:12发布

In my project I have textViews with associated input keyboard which has the strange look in landscape mode on iPhone 6 Plus under iOS8 as shown below:

enter image description here

It seems that it has different orientation internally sometimes.

But in some cases keyboard rotates fine but still has white gaps during orientation change and other visible bugs:

enter image description here

and finally we have ordinary expanded landscape view:

enter image description here

The question is how one can get the extended keyboard without bugs as follows:

enter image description here

2条回答
迷人小祖宗
2楼-- · 2020-02-04 22:48

I found the same kind of problem. When I was allowing only 1 of my viewcontroller to rotate.As soon as I was going inside the screen I was enabling the screen rotation and while coming out of the screen I was disabling it.Every thing was working fine except the keyboard UI.So I searched many forums for a solution but didn't find out anything useful. Anyhow, I have tried to understand the pattern and found out that I was using viewDidDisappear instead of viewWillDisappear.

Its important to disable the orientation before it goes another screen.Hope this helps.

查看更多
萌系小妹纸
3楼-- · 2020-02-04 23:06

The very important thing to do while migrating projects from xCode5.1 (and earlier) to xCode6 is to modify Info.plist file by adding Launch screen interface file base name key

enter image description here

You can event set it to empty string (usually it is a name of the Launch xib). Without this simply line one will have all the problems presented at screenshots above.

The absence of the Launch screen interface file base name results in working in compatibility mode with standard resolution of older devices. Let's run the following code in the project in each case

NSLog(@"bounds = %@", NSStringFromCGRect(UIScreen.mainScreen.bounds));

With Launch xib one gets

bounds = {{0, 0}, {414, 736}} // for iPhone 6Plus

bounds = {{0, 0}, {375, 667}} // for iPhone 6

Without it one gets

bounds = {{0, 0}, {320, 568}}

So, the last case indeed is the compatibility mode.

查看更多
登录 后发表回答