I’m sorry to say that there has been a lesson load bug on iPad that may have prevented iPad from loading lessons properly since the last update. I really wanted to push out a quick bug fix release but I was halfway through updating the UI (as outlined in the previous post) and I just wasn’t able to do it until that was complete. kanji Flow on iPad should work as expected again.
Various UI fixes and updates
Updated for iOS 13 to support all screen sizes but only works on iPad in full screen mode. Multi-tasking support (slide over and split view) will be in the next update.
There’s also an unlisted change regarding the dictionary integration also described in the previous post. Basically, if you already have imiwa? installed the app will continue to function as before. If you don’t have imiwa? installed, the dictionary buttons will turn blue and will open the default Apple Dictionary instead.
It’s been quite a long while since the last release, a little over 2 years. I’ve just been terribly busy with a new job, a new wife, and a new son. I had been slowly working on a new update for that whole time but a few things kept me from getting to release. Mostly, I was trying to get the UI updated to work on all screen sizes and devices.
I originally developed the base code for this app more than 10 years ago when the iOS SDK was first released back in 2008 (the first version of this app was called JiSeki released in April 2010 as my final project for college). At that time, there was only one iPhone with one screen size so, of course, I hard coded the UI to fit that screen. Then a phone with a four-inch screen was released so I added a bit of code to detect that and stretch things out a bit if necessary. Then the iPad was released so I added a bit more code to fit that resolution in portrait and landscape.
I realized when I was adding the four-inch code that it would probably be better to just refactor the layout code to just fit whatever the device resolution was. However, at the time it was a lot easier to just leave it alone and add a few exceptions where necessary.
I think it was around 2016 at WWDC that Apple began strongly suggesting that developers should start writing or refactoring code to dynamically layout on any resolution (adaptive layouts). This was because Apple knew they were going to start releasing a wider variety of devices with a lot of different resolutions with and without home buttons in addition to iPad’s multitasking features like split view and slide over.
However, I did not take the hint at that time. It wasn’t until iPhone X was released that it was obvious I would have to rewrite my UI. So, I started slowly working on storyboards using layout constraints in iOS 12. I was about halfway done during the last WWDC when Apple announced Swift UI. That seemed a lot better and easier to use than layout constraints so I decided to scrap what I had been working on and go with a new Swift UI instead.
Unfortunately, it turns out that while Swift UI is indeed great, it’s not quite feature complete and it would be pretty difficult to replace my full UI with just Swift UI. I’m hoping they’re going to add a lot of new features for iOS 14 which we should find out about at this year’s WWDC.
But, what to do about my current UI? Apple released some guidance this year which indicated apps that didn’t support every screen size would be…actually I’m not sure. Certainly they wouldn’t accept new apps or updates like that but I think they may have also been planning to boot current apps out of the store as well if they weren’t compatible. So that meant I had to get the app’s UI up-to-date before the deadline (which was fortunately extended to the end of June 2020, perhaps due to the pandemic).
I was kind of worried about how long it would take to get all the storyboards and constraints done but it turns out I really didn’t have to do that at all. I was just able to get rid of all (well, most) of my hard coded layouts and let iOS 13 handle most of it with my current xib files via a few auto layout tweaks.
It’s not perfect (iPad only works in full screen) and I am still going to have to do a lot of work to get a fully modern, dynamic UI that supports multi-tasking on iPad OS and dark mode and dynamic fonts and on and on. But it fills the screen and finally looks good on notched iPhones and iPad Pros:
Another interesting or strange thing that prevented me from getting the update out as quickly as I wanted was some trouble with the app review process this time.
For some reason, Apple told me that I had to remove the third party app from my app. As a developer, this request didn’t make any sense to me. As far as I know, there is no way to put an app inside another. Of course, kanji Flow is integrated with imiwa? so that you can tap a button to do a dictionary search and things like that. But, imiwa? isn’t in my app. It’s just a link. When you tap it, you leave my app and imiwa? opens. So, I tried to get some clarification but they just said the same thing:
They included screenshots of my imiwa? buttons as well as the download link.
So, in the end I had to change the buttons to a generic dictionary label and, by default, those buttons open the Apple Dictionary instead of the much better imiwa? dictionary. If the dictionary buttons are blue, you know you’ll be getting the built-in dictionary which really isn’t so useful (and is actually kind of buggy and really slow to open in iOS 13; hopefully they’ll fix that in iOS 14). If you already have imiwa? installed on your device then the buttons turn red and you’ll continue to get the same functionality as before.
I guess for new users I just hope they’ll read the App Store text or visit this site to realize they can get a lot of convenient features by installing imiwa? and using that for dictionary lookups and card importing.
For the next update, I probably will be waiting until WWDC this June to see how far along Swift UI has come and hopefully I’ll be able to get the app’s UI fully modernized to work with iPad’s multitasking. I personally can’t wait until I can have the app open in side view on top of my sketching app so that I can do my study sessions with writing practice on a single device. Until then…
There were some disparities between the way kanji Flow exported text to an e-mail and how it would read the data when trying to import that text but it should work as expected now.
Updated duplicate checking to check for a hash of the original kanji when importing from imiwa?
Duplicate checking looks at each card’s kanji entry to test for duplicate cards. That generally works, but if you edited a card’s kanji entry it could be imported again by accident. This could be especially problematic for verbs or verb-based words that might have multiple kanji entries:
Going forward, when you import a card from imiwa? kanji Flow will store a hash of the card’s kanji entry. Even if you edit the kanji, the hash won’t change. So, if you try to import the same card again later, the app will check the hash and let you know that it’s a duplicate. This check will occur automatically when doing imiwa? imports. You can choose to do the old check for exact kanji duplicates or check the import hash via an alert that appears when you tap the Duplicates button.
Please keep in mind that this will only work moving forward for cards that you import after installing this version of the app.
The new imiwa? is available and has quite a few new features. As far as kanji Flow is concerned, you can now open your “My vocabulary” lists and imiwa? file exports directly in kanji Flow:
When kanji Flow launches you’ll have the option of importing the cards into the currently open lesson or copying them to the clipboard to manually import via the Import button on the Edit view. You can choose to not import any duplicates if the list is just an update of a previous import:
Unfortunately, this doesn’t work from your History list but you can still copy and import like always. Actually, importing from the History list probably takes fewer taps than using a vocabulary list so it’s still my preferred and recommended method.
I’d like to address some of the requests that I’ve gotten. I’m going to talk about the two requests that I’ve received the most and requests for additions in general.
Some people want to be able to write on the screen and have the app check to see if you wrote the kanji correctly. I will never add this functionality to the app for two reasons: (1) I’m not great with graphics stuff so it would take a lot of time and work to implement. (2) I would have to add a database of kanji to the app for such a feature to reference against. I don’t want to add a database to the app because it would dramatically increase the size and imiwa? is already available. I could access such a database via the internet but I also don’t want to require a network connection for anything unless it’s absolutely necessary (current text-to-speech technology inherently requires a network connection if your OS doesn’t have the technology built-in).
I also practice writing kanji. Certainly, it isn’t necessary considering current technology; you’ll probably only ever really need to be able to type the reading and select the correct kanji on your computer or phone. However, I personally feel that practicing writing helps me to recall kanji better. I might be wrong about that, however. I think if you want to practice writing, you should get out a sheet of paper and a pen. I know that might not be convenient on the train or bus but that’s the way I think you should do it. If you’re not going to use a pen and paper you may as well just write the kanji on your palm with your finger or just “write” it in your head. That’s what I do on the train sometimes. I just really don’t think that being able to write on the screen has any real value. I might be wrong about that too. You might disagree with me. If so, you should find another application that lets you do that. That functionality will never be in kanji Flow.
Some people want to be able to see kanji stroke orders for the kanji on their cards. Again, that would require adding a database of stroke orders (or accessing such a database via a network connection) and, again, that feature is already just a couple of taps away in imiwa? I’m probably never going to mirror features that are already available in imiwa? even though it might be slightly more convenient. I really don’t think it’s so terribly inconvenient to just tap on the imiwa? link. Imagine if there were no dictionary integration at all. Then you’d have to manually copy and paste (or actually type it yourself!!!) into your dictionary or Google. I think what’s available now is pretty good and I’ll keep trying to improve the dictionary integration as much as possible. But, I’m not going to put such features directly into kanji Flow.
I’ve also received a lot of other requests. A lot of those requests have been implemented into the app. Things like new sorting options or things that make stuff the app already does easier or less annoying are generally easy to implement and I’m usually happy to do so. Things that the app doesn’t do at all probably aren’t going to be implemented ever. This is a flashcard application. If you’ve got a great idea for something else then that’s great and I appreciate you telling me about it but if that idea has nothing to do with kanji Flow then I really don’t know what else to say other than, thanks for telling me about that.
If you’ve got a great idea for an app but there doesn’t seem to be anything already on the store that meets your needs, I highly recommend Apress’s series of books if you’re interested in learning to program and making iPhone apps.