Over the past week I’ve been working on enhancing DTRichTextEditor and – by extension – some of the enhancements also went into DTCoreText, which is in charge of HTML parsing, generation and display of thusly generated NSAttributedStrings. Today I present version 1.1 which brings these fine enhancements:
- ADDED: Support for Undo/Redo
- ADDED: Setting and changing font family and size for ranges
- ADDED: Support for indenting
- CHANGED: Lots of documentation added, refactoring and cleanup
- FIXED: text scaling bug when pasting
- UPDATED: DTCoreText + DTFoundation submodules
This work was sponsored by Rick Meyers who is including DTRichTextEditor in his e-Sword HD iPad app.
e-Sword HD is a Bible study app for iPad that allows the user to make his own rich text notes on any verse in the Bible and it is stored in a database as HTML. Rick found DTRichTextEditor to be the ideal component for that, especially because contrary to UITextView it also supports iOS versions before iOS 6.
Rick has kindly permitted me to mention him as sponsor for this work that is to the benefit of all licensees existing and future. He also sent me these screenshots which show it in action. On the first one you can see how the user would annotate a Bible verse.
On the main reading view these annotations can be displayed in a popover, all rich formatting being preserved.
I find that having clients sponsor enhancements for components is a win:win scenario. With this extra funding I am more easily able to set aside time for working on them. Not just financially! Having somebody who is immediately testing changes I am making and providing good feedback is invaluable and highly motivational.
Especially so if this somebody is including the component in an app he is working on because he is able to notice API problems that I probably wouldn’t see from my theoretical point of view. Also having a live app can provide a wealth of test data in case there is a bug because having the component right under your nose is highly conducive to finding problems. While integrating the component and working around it in his app he had great bug reports for me that I could quickly reproduce and fix.