If you have an iPhone 3G configured for use in English, open up a new Note or Mail message and type the word "neat."
Your finger missed the "t"--didn't it? You typed "r" instead, for "near." That's OK. Backspace over the word and try again.
Oops. Missed it again, didn't you? Never mind, try again.
That "t" sure is difficult to hit, isn't it? Well, you can always try the tap-hold-drag method of typing. Backspace over the word again, type "nea", then tap the T and as soon as you see the letter appear above your finger (it'll probably be an "R" again), drag your finger around the keyboard.
Pretty amazing, huh? Any letter but "t" can be typed in. That's right. Some iPhones simply won't let you type the word "neat" without using the backspace.
The problem isn't limited to this word or this character. I discovered the problem for myself recently when trying to enter the name of a restaurant ("Quattro") into a new calendar event. Further experimentation revealed many other impossible sequences.
I'm used to mistyping things on my iPhone; errors are inevitable with such a small keyboard and no physical feedback, and I tend to just blaze along as fast as my fingers will go. But occasionally, it seems to me that I hit the key I wanted but get something else instead.
I knew I hadn't missed the "t" because I was typing "Quattro" relatively slowly. I backed up, typed the word again even more carefully, and suddenly realized that some of my typing errors aren't my errors at all!
After fiddling around with my phone for a while, I realized that the iPhone virtual keyboard code attempts to predict what key(s) you'll type next and prefers the more likely keys over the less likely keys.
In extreme cases, when the code thinks a certain letter is pretty much impossible, it'll block that letter entirely.
This works well when you're typing a word like "fish" and you type "fisj" instead. Nobody likes getting fisj when they are hoping for fish, right?
I don't really understand all of the decisions built into the code. For example, "abcf" is not allowed, but any other final letter is fine. Is this because "abc" is most commonly followed by "d" and, thus, "f" is just too close for comfort? But then why isn't "abcs" blocked?
But the real problem is that sometimes--as with the word "neat"--this code doesn't anticipate all the legitimate letter choices.
Oddly, it isn't that the iPhone doesn't like the word "neat." If you accidentally type "neay," it'll suggest that you really meant "neat." So the character-predicting code must be separate from the dictionary.
I also established that there are some places where this character prediction routine doesn't operate, such as when you're typing into password dialogs and short text boxes in Web pages. But when typing into large text boxes, like the Comment boxes on these blog posts, the "neat" problem returns.
I looked around online after discovering the problem with "Quattro" and found very few references to the problem. However, one page on the Mobile Computer magazine site ("Is the iPhone's predictive text too clever for its own good?") has not only an explanation but a video of the problem. That's also where I learned about "neat," which is the worst case I've seen so far--a perfectly good, common word that you just can't type into an iPhone.
I figure this issue deserves wider attention, hence this post. I've also asked a few people I know with iPhones to test the problem. Two people with 3G models saw exactly the same behavior. One person with a first-generation model didn't. If your phone doesn't behave as I've described here, add a comment below to let me know.