Programming multiline mixed uiview types text
Two ways I can think of:
- use CoreText with
NSAttributedStrings. Difficult to achieve, especially for the links (you'll have to register a listener somewhere, compute on which "link" you "clicked", ...), but provides the best performance.
- use a
UIWebViewand write the HTML on-the-fly. Less performant, but much more flexible.
How would I elegantly achieve multiline text that includes a combination of links, plain text, and formatted words? Right now, all I can think of is breaking each word into a token and displaying/positioning it differently (UILabel, UIButton, etc), however, this is terribly inefficient. Here is an example of what I am trying to achieve from the comments feature in Instagram.
Notice, formatted link to user name, indented multiline text, and possibility of inline links to hashtags.
Since iOS 5 you can use a UIWebView and set
contenteditable="true" on a div in it. This makes the UIWebView open a keyboard up and allow the user to directly input text into the DOM. You can then write a webapp that does syntax highlighting. You can communicate with the cocoa app with custom URLs.
The only issue I have is you don't seem to get spellchecking.