I started with Corona with a game and now I’m building business apps with it. I’ve encountered many obstacles along the way that have make me doubt if this is right platform for this kind of apps. I enjoy working it with but I tell you it have been a challenge. So far I’ve encountered 4 major obstacles: tables, textfields, maps and text in general. I’ve managed to partially solved some of the problems with those four but there’s still plenty of work that can be done.
The app below is the first business app I managed to get to the App Store:
Link to the app: https://itunes.apple.com/us/app/mi-mecanico-de-confianza/id700723956?mt=8
This allow the users to find certified mechanics and workshops. As you can see it have tables, textfields and maps. So here are the major problems with each one of this.
Tables
Tables are fine. They’re very flexible and work pretty well. The problem with them is they’re so flexible is unintuitive to work with them. The most basic of tables is a nightmare to program for a newbie. I’ve solved my problems with tables by wrapping it in some code and making an easier to use API.
Textfields
Oh god, textfields! This are very tricky to work with. Since they’re native objects they don’t look or behave equally in all platforms. Also, you can put them in groups and they’re always in top of everything else. I haven’t find a solution to this one yet. What I’m doing right now is to create a simple button that when you click on it shows an overlay scene with a big textfield. As soon as you press enter this overlay disappears and the text in the button is updated. Is kinda ugly but it works. I’m currently testing atanas newEditField and it looks promising.
Maps
Maps are fine too, except they don’t work well in Android. For the app above I had to implement and entirely different solution for Android. The problem was that, for some reason, in Android the map only showed 7 markers. In iOS worked fine but not in Android. I asked in the forums but no one answered. So, what I did was to implement a basic web page with a map and showed it through the app with a WebView.
Text
Dealing with text in Corona is pretty easy when is just a few lines of text. The things get complicated when you have to deal with longer bits of text, specially if they have formatting in them. For example, how do you deal with something like this:
Is a paragraph that have some words in bold. As far as I know there’s no way to apply formatting like that to a text. If there is please let me know. There are some other things like when you want to increase the line height or justify the text. My solution to this is very weird but it works fairly well. I use a WebView, with transparent background, that shows an HTML file with the formatted text. The problem with this approach is that the text doesn’t scale well. I’m working on a solution to this. I’ve build a component that takes text in html and creates a WebView with that text. So you can do something like this:
local text = elements.newWebText("Hello, \<strong\>world!\</strong\>")
Although is not perfect yet I can share the code if any of you need to do something like this.
Since I found this thread I saw new hope. Now I know I’m not the only one building business apps with Corona. I’m willing to help in anything that will make building business apps in Corona easier.