Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Kiosk Applications - OS X programming - Multiple monitors

Tags:

macos

cocoa

I've learnt Cocoa + Objective C primarily for iPhone development, and I need to utilize this skill set to build a very basic kiosk application for OS X in a couple of days. The application is basically as follows :

  • The setup has two touch screen monitors, the app must be running full screen mode. The monitor on the right acts as a detail view to a list of options on the left. There are 3 options on the monitor on the left. Picking one will play a movie on the right, Picking two will take you to a quiz, Picking 3 will pull up a Webview.

  • The user may not use any other operations on the PC. (I've started reading about OS X application development and realized Cocoa provides a kiosk mode for these types of apps)

My questions briefly are

  • Firstly, any help on how to get my app running in a kiosk mode is much appreciated! I'm under a bit of a time crunch (2 days to get all this done, talk about life in startups!), so completely static content is fine, I'm slightly worried about how OS X will handle full screen mode if an app has been written in a smaller window size. (Scaling etc.)

  • Next, assuming there are two windows, one on each screen, how do I deal with focus? If the user suddenly gets bored with content on the right and touches the window on the left, the first touch will probably act to focus the window and the second will act as a click on the button. I'd like to avoid this scenario!)

  • What are the navigation paradigms in OS X ? I'm guessing it's not as simple as [navigationController pushViewController]? In short, how do I display a new view over an existing view?

Thanks,
Teja

like image 643
Tejaswi Yerukalapudi Avatar asked Sep 26 '10 23:09

Tejaswi Yerukalapudi


1 Answers

Firstly, any help on how to get my app running in a kiosk mode is much appreciated!

http://developer.apple.com/library/mac/#technotes/KioskMode/

Next, assuming there are two windows, one on each screen, how do I deal with focus? If the user suddenly gets bored with content on the right and touches the window on the left, the first touch will probably act to focus the window and the second will act as a click on the button. I'd like to avoid this scenario!)

Click-through is the default. If you have any custom views, respond to acceptsFirstMouse: with YES to support click-through in them.

What are the navigation paradigms in OS X ?

Typically either window-based or source-list-based. Your application is atypical.

I'm guessing it's not as simple as [navigationController pushViewController]?

It's simpler and more complex at the same time. There is no stack to manage; you can have multiple windows up at the same time. It gets more complex when you want everything in one window (as in your kiosk-mode app), in which case you end up using tab views (with or without tabs) to enable the user to switch from one view to another.

In short, how do I display a new view over an existing view?

You don't. Layering one view over another in the same superview is barely supported at all in AppKit, and almost always wrong.

In a normal application, you should make multiple windows. In an app like yours, you'll need to use tab views. View controllers may help you here, although NSViewControllers are very different from UIViewControllers (as I mentioned, no view stack); they're more similar to NSWindowControllers.

like image 112
Peter Hosey Avatar answered Sep 22 '22 13:09

Peter Hosey