There's no mention in the article that since iOS 7, there's been a "UIScrollViewKeyboardDismissMode", which allows "interactive" dismissal. It isn't perfect, but the last time I investigated, too many solutions out there involved touching private APIs.
I could've more explicit. Interactive dismissal only made possible with UIScrollViewKeyboardDismissModeInteractive introduced since iOS 7. This article described solution for interactive dismissal with `sticky` input field atop the keyboard.
Create a constraint that attaches the input field to the bottom of the scrollview.
One tradeoff is that dismissal doesn't start until your touch enters the real keyboard area. I'll take it, since it's safer than using KVO to observe private APIs.