For that reason, we decided to build our own growing text input from scratch, and we've just released it as open source. We hope you all will find it useful!
Care to elaborate? Sounds intriguingly crufty.
Unfortunately, there isn't a standard way to invert a UITableView, and have cells laid out from the bottom.
So, the easiest solution for us was to set the table's transform to CGAffineTransformMake(1, 0, 0, -1, 0, 0) (flip the whole table upside down) and then give the cells the same transform (to cancel out the table view's transform).
A bit hacky, and causes indexPaths to be inverted as well (0,0 is now at the bottom), but worked for us.
Seen a few other people take this approach as well:
The downside is you lose out on many of the out of the box stuff, like cell background highlights that you know have to define yourself.
The upside is that you can now reuse the UIView everywhere, including non-subclasses of ScrollView.
Kudos to all the iOS developers out there. I don't know how you guys manage to do it, but I'm sure glad you do and are willing to share your code with the rest of us.
If we had a similar iOS control, we could do it really simply too.
With the browser engine underneath, you get nice benefits in text layouting, image handling and some inputs, but it requires a lot of work to get good performance, to get touch interaction and scrolling feel natural, to make transition animations to work well. Offline access is also PITA if you have a lot of data - indexedDB crashes left and right if not used carefully. The last 20% of the app takes 800% of the time :) and the result is still not what you wanted.
I haven't encountered many good mobile web apps. HN app by @premii is pretty good (http://hn.premii.com/), and the developer once described here in HN that he didn't use any JS library like jQuery for performance reasons, everything had to be coded manually.
Why would I want to use this rather than a UITableView where I append the newest message in the end of the UITableView every time (you'd have to increase it's length +1 for each new message, but hey that may be ok)?
I settled on https://github.com/oseparovic/MessageComposerView.
It's nice, simple, and does the trick. However, I will definitely checkout SlackTExtViewController.
For people not in IOS development: yes this is crazy that it is not built in. But our tool chain is better :)
If you had a giant piece of logic that wouldn't be atomic in multiple commits, but you have multiple commits on your machine for the sake of saving your butt in case you roll down a weird rabbit hole, then you'd probably squash before merging into master and end up decreasing your total quantity of commits.
If you had a lot of small changes that all were safe seperately, you might break up what could have been a single commit into several commits so that you have a more descriptive history, and increasing your quantity of commits.
Plus, our graphs look ridiculous, I'm easily 5-10 times over the others, but it's not that I'm doing more work, I just commit more often.
That way you get the best of both worlds (very easy archeology and very easy backing out of features)