相关疑难解决方法(0)

键盘上的UIView类似于iMessage App

目前我正在尝试基本实现和精确复制Apples iMessage App.

这意味着我需要一个停靠在屏幕底部的UITextView,并在它成为firstResponder时向上移动. - 实际上这很容易.有很多方法可以做到这一点,如果收到通知,最常见的两个当然是向上或向下动画.另一种是通过inputAccessoryView来完成.可悲的是,有一些功能,另一个没有.它们似乎是相互排斥的.

最大的问题是轮换.

我已经深入研究了至少七个不同的github项目,它们都重新实现了我想要实现的相同功能/行为,但实际上所有这些项目都失败了.

例如,官方Facebook/FacebookMes​​senger /(可能是WhatsApp)应用程序使用的HPGrowingTextView是一大块垃圾代码.拿你的iDevice,打开Facebook应用程序,进行聊天,弹出键盘并旋转你的设备.如果你注意你会注意到输入条略微跳跃,并在键盘的框架和它自己的框架之间留下一些空白.然后在显示键盘时查看iMessage中的Apples实现.这是完美的.

除此之外,HPGrowingTextView库使用的contentOffset和EdgeInset-hacking给了我噩梦.

所以我想自己做,从头开始.

现在,我已经有了一个非常光滑,优雅和无法实现的不断增长的UITextView,但缺少一部分.

优雅的旋转.

当我在willRotateToInterfaceOrientation:duration:方法中简单地将帧调整到各自的新位置时,一切都会完美地完成,但我遇到的问题与HPGrowingTextView(请参阅Facebook App)有关.旋转发生时,输入视图和键盘之间有一点点空间.

我发现当将设备旋转到横向时,当前显示的人像键盘不会"变形"而是消失(发送'willHide'通知)并重新出现横向版本(发送'willShow'通知).过渡是一种非常微妙的淡化,可能还有一些调整.

我使用inputAccessoryView重新实现了我的项目,看看当时发生了什么,我感到非常惊喜.inputAccessoryView与键盘完美同步旋转.两者之间没有空隙/间隙.

遗憾的是,我还没有想出如何将inputAccessoryView停靠在屏幕底部并且不会在键盘旁边消失/移出它...

我不想要的是hack-y解决方案,例如,"在toInterfaceOrientation的CoordinateSystem中稍微降低帧,然后在调用didRotateFrom ...时将其移回."

我知道另一个已经设法实现此类行为的应用程序,它是"Kik Messenger".

有没有人有想法,建议或链接,我还没有看到这个主题?

谢谢你!

注意:一旦这个问题得到解决,我将开放项目供所有人利用,因为几乎我在过去几天能够找到的所有实现都是一团糟.

uitextview uikeyboard ios

26
推荐指数
2
解决办法
1万
查看次数

标签 统计

ios ×1

uikeyboard ×1

uitextview ×1