views:

18

answers:

1

I have a couple of iOS applications which present inherently linearly organised information, allowing the user to move forward and backward through the data with on-screen controls. I would like to allow users with the keyboard dock or a paired bluetooth keyboard to use the arrow keys to move back and forth as well. Since the apps are full-screen it is very important to the user experience that there is no risk of displaying an on-screen keyboard as a side-effect.

I cannot find an API that will let me do this in Apple's documentation; but I cannot be sure that I have used the right search terms.

What APIs are there which will allow me to achieve this?

A: 

Not actually knowing, I suspect the answer is "you can't, not in an official way".

Since a user-friendly UI is top priority for the iPad platform according to Apple, I think they are doing what they can to discourage behavior that would depend on a keyboard being available. Apps should behave the same and provide the same functionality with or without a hardware keyboard. Things like keyboard hotkeys or navigation that doesn't use on-screen elements are probably no-no:s for that reason.

But, like I said, this is just speculation.

calmh
He's not trying to require a keyboard, just make the app usable without removing one's hands from the keyboard if you _do_ have one. That's an _increase_ in user-friendliness.
Nicholas Knight
@Nicholas Yep, I see what he wants to do, and I'm not saying it's wrong in any way. :) As there is a "Next" key on the soft keyboard, something similar should be doable from a hard keyboard as well. But I suspect that using keyboard shortcuts to, for example, present new view controllers would go against the iPad philosophy.
calmh
Also (playing the devils advocate here) having apps be more user friendly when a hard keyboard is present might not be what Apple feels is the best for the platform... They likely want to downplay the need of external peripherals. But this all has nothing to do with the actual question. :)
calmh