Cover image for Programming the iPhone User Experience

Book description

Apple's iPhone and iPod Touch not only feature the world's most powerful mobile operating system, they also usher in a new standard of human-computer interaction through gestural interfaces and multi-touch navigation. This book provides you with a hands-on, example-driven tour of UIKit, Apple's user interface toolkit, and includes common design patterns to help you create new iPhone and iPod Touch user experiences. Using Apple's Cocoa Touch framework, you'll learn how to build applications that respond in unique ways when users tap, slide, swipe, tilt, shake, or pinch the screen. Programming the iPhone User Experience is a perfect companion to Apple's Human Interface Guidelines, and provides the practical information you need to develop innovative applications for the iPhone and iPod Touch, whether you're a CTO, developer, or UI/UX designer.

  • Understand the basics of the Cocoa Touch framework for building iPhone and iPod Touch applications

  • Learn theory and best practices for using Cocoa Touch to develop applications with engaging and effective user interfaces

  • Apply your knowledge of Objective-C to the iPhone/iPod Touch framework

  • Customize standard UIKit views according to Apple's Human Interface Guidelines and usability principles

  • Learn patterns for handling user experience concerns outside of the interface, such as network- and location-awareness

Table of Contents

  1. Special Upgrade Offer
  2. Preface
    1. Audience for This Book
    2. Organization of This Book
    3. Conventions Used in This Book
    4. Using Code Examples
    5. Safari® Books Online
    6. How to Contact Us
    7. Acknowledgments
  3. 1. Cocoa Touch: The Core iPhone
    1. Mac Frameworks
      1. UIKit Overview
      2. Foundation Overview
    2. Garbage Collection
    3. The Devices
  4. 2. The Mobile HIG
    1. The Mobile HIG
    2. Enter Cocoa Touch
    3. Mobile HIG Concepts
      1. Provide One User Experience
      2. Provide Seamless Interaction
      3. Let the User Know What’s Going On
      4. Use Progressive Enhancement
      5. Consider Cooperative Single-Tasking
    4. A Supplement to the HIG
  5. 3. Types of Cocoa Touch Applications
    1. Productivity Tools
      1. Limited or Assisted Scrolling
      2. Clear and Clean Detail Views
    2. Light Utilities
    3. Immersive Applications
  6. 4. Choosing an Application Template
    1. View Controllers
      1. View Controller Subclasses and Corresponding Application Templates
        1. UIViewController and view-based applications
        2. UIViewController and utility applications
        3. UITabBarController and tab-based applications
        4. UINavigationController and navigation-based applications
        5. UITableViewController and navigation-based applications
        6. OpenGL ES applications
    2. Core Data Templates
  7. 5. Cooperative Single-Tasking
    1. Task Management and iPhone OS
      1. Example Application
    2. Launching Quickly
      1. Example Application
    3. Handling Interruptions
      1. Interruptions and the Status Bar
      2. Example Application
    4. Handling Terminations
      1. Example Application
    5. Using Custom URLs
    6. Using Shared Data
    7. Using Push Notifications
  8. 6. Touch Patterns
    1. Touches and the Responder Chain
      1. UITouch Overview
      2. The Responder Chain
    2. Touch Accuracy
      1. Size
      2. Shape
      3. Placement
      4. Overlapping Views
    3. Detecting Taps
      1. Detecting Single Taps
      2. Detecting Multiple Taps
    4. Detecting Multiple Touches
    5. Handling Touch and Hold
    6. Handling Swipes and Drags
    7. Handling Arbitrary Shapes
  9. 7. Interaction Patterns and Controls
    1. Application Interaction Patterns
      1. Command Interfaces
      2. Radio Interfaces
      3. Navigation Interfaces
      4. Modal Interfaces
      5. Combination Interfaces
    2. UIControl Classes
      1. The Target-Action Mechanism
      2. Types of Control Events
    3. Standard Control Types
      1. Buttons
        1. Creating buttons
        2. Info buttons
      2. Modal Buttons
        1. Creating a modal button subclass
      3. Sliders
      4. Tables and Pickers
      5. Search Bars
      6. Segmented Controls
    4. Scrolling Controls
    5. Tables and Embedded Controls
      1. Passive Indicators
      2. Active Indicators and Control Accessories
  10. 8. Progressive Enhancement
    1. Network Connectivity
      1. Maintain State and Persist Data
      2. Cache User Input
      3. Reflect Connectivity Appropriately
      4. Load Data Lazily
        1. Lazy loading with Core Data
      5. Peer Connectivity with GameKit
    2. Location Awareness
    3. Accelerometer Support
    4. Rotation Support
    5. Audio Support
  11. 9. UX Anti-Patterns
    1. Billboards
    2. Sleight of Hand
    3. Bullhorns
    4. App As OS
    5. Spin Zone
    6. The Bouncer
    7. Gesture Hijacking
    8. Memory Lapse
    9. The High Bar
    10. Sound Off
  12. Index
  13. Colophon
  14. Special Upgrade Offer
  15. Copyright