KR20170081293A - 이벤트 인식 - Google Patents

이벤트 인식 Download PDF

Info

Publication number
KR20170081293A
KR20170081293A KR1020177018175A KR20177018175A KR20170081293A KR 20170081293 A KR20170081293 A KR 20170081293A KR 1020177018175 A KR1020177018175 A KR 1020177018175A KR 20177018175 A KR20177018175 A KR 20177018175A KR 20170081293 A KR20170081293 A KR 20170081293A
Authority
KR
South Korea
Prior art keywords
event
recognizer
touch
gesture
views
Prior art date
Application number
KR1020177018175A
Other languages
English (en)
Other versions
KR101854582B1 (ko
Inventor
조슈아 에이치. 샤퍼
케네스 엘. 코씨엔다
임란 차우드리
Original Assignee
애플 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US13/077,931 external-priority patent/US9311112B2/en
Priority claimed from US13/077,524 external-priority patent/US9244606B2/en
Priority claimed from US13/077,927 external-priority patent/US8566045B2/en
Priority claimed from US13/077,925 external-priority patent/US8566044B2/en
Application filed by 애플 인크. filed Critical 애플 인크.
Publication of KR20170081293A publication Critical patent/KR20170081293A/ko
Application granted granted Critical
Publication of KR101854582B1 publication Critical patent/KR101854582B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0487Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
    • G06F3/0488Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
    • G06F3/04883Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures for inputting data by handwriting, e.g. gesture or text
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0487Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
    • G06F3/0488Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
    • G06F3/04886Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures by partitioning the display area of the touch-screen or the surface of the digitising tablet into independently controllable areas, e.g. virtual keyboards or menus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2203/00Indexing scheme relating to G06F3/00 - G06F3/048
    • G06F2203/048Indexing scheme relating to G06F3/048
    • G06F2203/04808Several contacts: gestures triggering a specific function, e.g. scrolling, zooming, right-click, when the user establishes several contacts with the surface simultaneously; e.g. using several fingers or a combination of fingers and pen
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/912Applications of a database
    • Y10S707/913Multimedia

Abstract

본 방법은 뷰 계층 구조의 하나 이상의 뷰들을 표시하는 단계, 및 특정 뷰와 관련된 소프트웨어 요소들을 실행하는 단계를 포함한다. 각각의 특정 뷰는 이벤트 인식기들을 포함한다. 각각의 이벤트 인식기는 하나 이상의 이벤트 정의들, 및 타겟에 대한 액션을 지정하고, 이벤트 인식에 응답하여 액션을 타겟으로 전송하도록 구성되는 이벤트 핸들러를 구비한다. 본 방법은 서브이벤트들의 시퀀스를 검출하는 단계, 및 뷰 계층 구조의 뷰들 중 하나를 히트 뷰로서 식별하는 단계를 포함하고, 히트 뷰는 뷰 계층 구조 내의 어떤 뷰들이 활성적으로 관련된 뷰들인지를 설정한다. 본 방법은 각각의 서브이벤트를 각각의 활성적으로 관련된 뷰에 대한 이벤트 인식기들로 전달하는 단계를 포함한다. 각각의 이벤트 인식기는 이벤트 정의들을 가지며, 이들 중 하나는 내부 상태에 기초하여 선택된다. 각각의 이벤트 인식기는 서브이벤트들의 시퀀스 내의 다음 서브이벤트를 처리하기 전에 각각의 서브이벤트를 처리한다.

Description

이벤트 인식{EVENT RECOGNITION}
본 발명은 일반적으로 터치 입력을 인식하기 위한 기기들 및 방법들을 포함하지만 이에 한정되지 않는 사용자 인터페이스 처리에 관한 것이다.
전자 장치는 통상적으로 컴퓨팅 장치와 상호작용하는 데 사용되는 사용자 인터페이스를 포함한다. 사용자 인터페이스는 디스플레이 및/또는 다양한 양태의 사용자 인터페이스와 상호작용하기 위한 키보드, 마우스 및 터치 감지 표면과 같은 입력 장치들을 포함할 수 있다. 터치 감지 표면을 입력 장치로서 갖는 일부 장치들에서는, 터치 기반 제스처들의 제1 세트(예를 들어, 탭(tap), 더블 탭, 수평 스와이프(swipe), 수직 스와이프, 핀치(pinch), 디핀치(depinch), 2 손가락 스와이프 중 둘 이상)가 특정 상황에서(예를 들어, 제1 애플리케이션의 특정 모드에서) 적절한 입력들로서 인식되며, 터치 기반 제스처들의 다른 상이한 세트들이 다른 상황들(예를 들어, 상이한 애플리케이션들 및/또는 제1 애플리케이션 내에서의 상이한 모드들 또는 상황들)에서 적절한 입력들로서 인식된다. 결과적으로, 터치 기반 제스처들을 인식하고 그에 응답하는 데 필요한 소프트웨어 및 논리는 복잡해질 수 있으며, 애플리케이션이 갱신되거나 새로운 애플리케이션이 컴퓨팅 장치에 추가될 때마다 수정을 필요로 할 수 있다. 이들 및 유사한 문제들은 터치 기반 제스처들과는 다른 입력 소스들을 사용하는 사용자 인터페이스들에서 발생할 수 있다.
따라서, 컴퓨팅 장치 상의 모든 애플리케이션 프로그램들의 사실상 모든 상황들 또는 모드들에 쉽게 적응할 수 있고, 애플리케이션이 갱신되거나 새로운 애플리케이션이 컴퓨팅 장치에 추가될 때 수정을 거의 또는 전혀 필요로 하지 않는, 터치 기반 제스처들 및 이벤트들은 물론, 다른 입력 소스들로부터의 제스처들 및 이벤트들을 인식하기 위한 포괄적인 프레임워크 또는 메커니즘을 갖는 것이 바람직할 것이다.
전술한 단점들을 해결하기 위하여, 일부 실시예들은 터치 감지 디스플레이를 갖는 전자 장치에서 수행되는 방법을 제공한다. 전자 장치는 적어도 제1 소프트웨어 애플리케이션 및 제2 소프트웨어 애플리케이션을 실행하도록 구성된다. 제1 소프트웨어 애플리케이션은 하나 이상의 제스처 인식기들의 제1 세트를 포함하고, 제2 소프트웨어 애플리케이션은 하나 이상의 뷰들 및 하나 이상의 제스처 인식기들의 제2 세트를 포함한다. 각각의 제스처 인식기들은 대응하는 제스처 핸들러들을 갖는다. 이 방법은 적어도 제2 소프트웨어 애플리케이션의 하나 이상의 뷰들의 서브세트를 표시하는 단계, 및 적어도 제2 소프트웨어 애플리케이션의 하나 이상의 뷰들의 서브세트를 표시하는 동안에, 터치 감지 디스플레이 상에서 터치 입력들의 시퀀스를 검출하는 단계를 포함한다. 터치 입력들의 시퀀스는 하나 이상의 터치 입력들의 제1 부분 및 제1 부분에 이어지는 하나 이상의 터치 입력들의 제2 부분을 포함한다. 이 방법은 또한 터치 입력들의 시퀀스를 검출하는 제1 페이즈(phase) 동안에, 하나 이상의 터치 입력들의 제1 부분을 제1 소프트웨어 애플리케이션 및 제2 소프트웨어 애플리케이션으로 전달하는 단계, 제1 세트 내의 제스처 인식기들로부터 하나 이상의 터치 입력들의 제1 부분을 인식하는 하나 이상의 매칭 제스처 인식기들을 식별하는 단계, 및 하나 이상의 매칭 제스처 인식기들에 대응하는 하나 이상의 제스처 핸들러들을 이용하여 하나 이상의 터치 입력들의 제1 부분을 처리하는 단계를 포함한다.
일부 실시예들에 따르면, 터치 감지 디스플레이를 갖는 전자 장치에서 방법이 수행된다. 전자 장치는 적어도 제1 소프트웨어 애플리케이션 및 제2 소프트웨어 애플리케이션을 실행하도록 구성된다. 제1 소프트웨어 애플리케이션은 하나 이상의 제스처 인식기들의 제1 세트를 포함하고, 제2 소프트웨어 애플리케이션은 하나 이상의 뷰들 및 하나 이상의 제스처 인식기들의 제2 세트를 포함한다. 각각의 제스처 인식기들은 대응하는 제스처 핸들러들을 갖는다. 이 방법은 하나 이상의 뷰들의 제1 세트를 표시하는 단계를 포함한다. 하나 이상의 뷰들의 제1 세트는 적어도 제2 소프트웨어 애플리케이션의 하나 이상의 뷰들의 서브세트를 포함한다. 이 방법은 또한 하나 이상의 뷰들의 제1 세트를 표시하는 동안에, 터치 감지 디스플레이 상에서 터치 입력들의 시퀀스를 검출하는 단계를 포함한다. 터치 입력들의 시퀀스는 하나 이상의 터치 입력들의 제1 부분 및 제1 부분에 이어지는 하나 이상의 터치 입력들의 제2 부분을 포함한다. 이 방법은 하나 이상의 제스처 인식기들의 제1 세트 내의 적어도 하나의 제스처 인식기가 하나 이상의 터치 입력들의 제1 부분을 인식하는지를 결정하는 단계를 포함한다. 이 방법은 또한 하나 이상의 제스처 인식기들의 제1 세트 내의 적어도 하나의 제스처 인식기가 하나 이상의 터치 입력들의 제1 부분을 인식한다는 결정에 따라, 터치 입력들의 시퀀스를 제2 소프트웨어 애플리케이션으로 전달하지 않고 터치 입력들의 시퀀스를 제1 소프트웨어 애플리케이션으로 전달하는 단계, 및 하나 이상의 제스처 인식기들의 제1 세트 내의 적어도 하나의 제스처 인식기가 터치 입력들의 시퀀스를 인식하는지를 결정하는 단계를 포함한다. 이 방법은 하나 이상의 제스처 인식기들의 제1 세트 내의 적어도 하나의 제스처 인식기가 터치 입력들의 시퀀스를 인식한다는 결정에 따라, 터치 입력들의 시퀀스를 인식하는 하나 이상의 제스처 인식기들의 제1 세트 내의 적어도 하나의 제스처 인식기를 이용하여 터치 입력들의 시퀀스를 처리하는 단계를 더 포함한다. 이 방법은 또한 하나 이상의 제스처 인식기들의 제1 세트 내의 어떠한 제스처 인식기도 하나 이상의 터치 입력들의 제1 부분을 인식하지 않는다는 결정에 따라, 터치 입력들의 시퀀스를 제2 소프트웨어 애플리케이션으로 전달하는 단계, 및 하나 이상의 제스처 인식기들의 제2 세트 내의 적어도 하나의 제스처 인식기가 터치 입력들의 시퀀스를 인식하는지를 결정하는 단계를 포함한다. 이 방법은 하나 이상의 제스처 인식기들의 제2 세트 내의 적어도 하나의 제스처 인식기가 터치 입력들의 시퀀스를 인식한다는 결정에 따라, 터치 입력들의 시퀀스를 인식하는 하나 이상의 제스처 인식기들의 제2 세트 내의 적어도 하나의 제스처 인식기를 이용하여 터치 입력들의 시퀀스를 처리하는 단계를 더 포함한다.
일부 실시예들에 따르면, 내부 상태를 갖는 전자 장치에서 방법이 수행된다. 전자 장치는 복수의 뷰를 갖는 뷰 계층 구조를 포함하는 소프트웨어를 실행하도록 구성된다. 이 방법은 뷰 계층 구조의 하나 이상의 뷰들을 표시하는 단계, 및 하나 이상의 소프트웨어 요소들을 실행하는 단계를 포함한다. 각각의 소프트웨어 요소는 특정 뷰와 관련되며, 각각의 특정 뷰는 하나 이상의 이벤트 인식기들을 포함한다. 각각의 이벤트 인식기는 하나 이상의 서브이벤트들에 기초하는 하나 이상의 이벤트 정의들, 및 타겟에 대한 액션을 지정하고, 이벤트 인식기가 하나 이상의 이벤트 정의들 중 특정 이벤트 정의에 대응하는 이벤트를 검출하는 것에 응답하여 액션을 타겟으로 전송하도록 구성되는 이벤트 핸들러를 구비한다. 이 방법은 또한 하나 이상의 서브이벤트들의 시퀀스를 검출하는 단계, 및 뷰 계층 구조의 뷰들 중 하나를 히트 뷰로서 식별하는 단계를 포함한다. 히트 뷰는 뷰 계층 구조 내의 어떤 뷰들이 활성적으로 관련된 뷰들인지를 설정한다. 이 방법은 각각의 서브이벤트를 뷰 계층 구조 내의 각각의 활성적으로 관련된 뷰에 대한 이벤트 인식기들로 전달하는 단계를 더 포함한다. 뷰 계층 구조 내의 활성적으로 관련된 뷰들에 대한 적어도 하나의 이벤트 인식기는 복수의 이벤트 정의를 가지며, 복수의 이벤트 정의 중 하나는 전자 장치의 내부 상태에 따라 선택된다. 적어도 하나의 이벤트 인식기는 선택된 이벤트 정의에 따라 서브이벤트들의 시퀀스 내의 다음 서브이벤트를 처리하기 전에 각각의 서브이벤트를 처리한다.
일부 실시예들에 따르면, 컴퓨터 판독 가능 저장 매체가 전자 장치의 하나 이상의 프로세서들에 의해 실행하기 위한 하나 이상의 프로그램들을 저장한다. 하나 이상의 프로그램들은 전자 장치에 의해 실행될 때 장치로 하여금 전술한 방법들 중 임의의 방법을 수행하게 하는 하나 이상의 명령어들을 포함한다.
일부 실시예들에 따르면, 터치 감지 디스플레이를 갖는 전자 장치는 하나 이상의 프로세서들, 및 하나 이상의 프로세서들에 의해 실행하기 위한 하나 이상의 프로그램들을 저장하는 메모리를 포함한다. 하나 이상의 프로그램들은 전술한 방법들 중 임의의 방법을 구현하기 위한 명령어들을 포함한다.
일부 실시예들에 따르면, 터치 감지 디스플레이를 갖는 전자 장치는 전술한 방법들 중 임의의 방법을 구현하기 위한 수단을 포함한다.
일부 실시예들에 따르면, 터치 감지 디스플레이를 갖는 다기능 장치 내의 정보 처리 기기는 전술한 방법들 중 임의의 방법을 구현하기 위한 수단을 포함한다.
일부 실시예들에 따르면, 전자 장치는 터치 입력들을 수신하도록 구성되는 터치 감지 디스플레이 유닛, 및 터치 감지 디스플레이 유닛에 결합되는 처리 유닛을 포함한다. 처리 유닛은 적어도 제1 소프트웨어 애플리케이션 및 제2 소프트웨어 애플리케이션을 실행하도록 구성된다. 제1 소프트웨어 애플리케이션은 하나 이상의 제스처 인식기들의 제1 세트를 포함하고, 제2 소프트웨어 애플리케이션은 하나 이상의 뷰들 및 하나 이상의 제스처 인식기들의 제2 세트를 포함한다. 각각의 제스처 인식기들은 대응하는 제스처 핸들러들을 갖는다. 처리 유닛은 적어도 제2 소프트웨어 애플리케이션의 하나 이상의 뷰들의 서브세트의 표시를 가능하게 하고; 적어도 제2 소프트웨어 애플리케이션의 하나 이상의 뷰들의 서브세트를 표시하는 동안에 터치 감지 디스플레이 유닛 상에서 터치 입력들의 시퀀스를 검출하도록 구성된다. 터치 입력들의 시퀀스는 하나 이상의 터치 입력들의 제1 부분 및 제1 부분에 이어지는 하나 이상의 터치 입력들의 제2 부분을 포함한다. 처리 유닛은 터치 입력들의 시퀀스를 검출하는 제1 페이즈 동안: 하나 이상의 터치 입력들의 제1 부분을 제1 소프트웨어 애플리케이션 및 제2 소프트웨어 애플리케이션으로 전달하고; 제1 세트 내의 제스처 인식기들로부터 하나 이상의 터치 입력들의 제1 부분을 인식하는 하나 이상의 매칭 제스처 인식기들을 식별하고; 하나 이상의 매칭 제스처 인식기들에 대응하는 하나 이상의 제스처 핸들러들을 이용하여 하나 이상의 터치 입력들의 제1 부분을 처리하도록 구성된다.
일부 실시예들에 따르면, 전자 장치는 터치 입력들을 수신하도록 구성되는 터치 감지 디스플레이 유닛, 및 터치 감지 디스플레이 유닛에 결합되는 처리 유닛을 포함한다. 처리 유닛은 적어도 제1 소프트웨어 애플리케이션 및 제2 소프트웨어 애플리케이션을 실행하도록 구성된다. 제1 소프트웨어 애플리케이션은 하나 이상의 제스처 인식기들의 제1 세트를 포함하고, 제2 소프트웨어 애플리케이션은 하나 이상의 뷰들 및 하나 이상의 제스처 인식기들의 제2 세트를 포함한다. 각각의 제스처 인식기들은 대응하는 제스처 핸들러들을 갖는다. 처리 유닛은 하나 이상의 뷰들의 제1 세트의 표시를 가능하게 하도록 구성된다. 하나 이상의 뷰들의 제1 세트는 적어도 제2 소프트웨어 애플리케이션의 하나 이상의 뷰들의 서브세트를 포함한다. 처리 유닛은 하나 이상의 뷰들의 제1 세트를 표시하는 동안: 터치 감지 디스플레이 유닛 상에서 터치 입력들의 시퀀스를 검출하고(터치 입력들의 시퀀스는 하나 이상의 터치 입력들의 제1 부분 및 제1 부분에 이어지는 하나 이상의 터치 입력들의 제2 부분을 포함함); 하나 이상의 제스처 인식기들의 제1 세트 내의 적어도 하나의 제스처 인식기가 하나 이상의 터치 입력들의 제1 부분을 인식하는지를 결정하도록 구성된다. 처리 유닛은 하나 이상의 제스처 인식기들의 제1 세트 내의 적어도 하나의 제스처 인식기가 하나 이상의 터치 입력들의 제1 부분을 인식한다는 결정에 따라: 터치 입력들의 시퀀스를 제2 소프트웨어 애플리케이션으로 전달하지 않고 터치 입력들의 시퀀스를 제1 소프트웨어 애플리케이션으로 전달하고; 하나 이상의 제스처 인식기들의 제1 세트 내의 적어도 하나의 제스처 인식기가 터치 입력들의 시퀀스를 인식하는지를 결정하도록 구성된다. 처리 유닛은 하나 이상의 제스처 인식기들의 제1 세트 내의 적어도 하나의 제스처 인식기가 터치 입력들의 시퀀스를 인식한다는 결정에 따라, 터치 입력들의 시퀀스를 인식하는 하나 이상의 제스처 인식기들의 제1 세트 내의 적어도 하나의 제스처 인식기를 이용하여 터치 입력들의 시퀀스를 처리한다. 처리 유닛은 하나 이상의 제스처 인식기들의 제1 세트 내의 어떠한 제스처 인식기도 하나 이상의 터치 입력들의 제1 부분을 인식하지 않는다는 결정에 따라: 터치 입력들의 시퀀스를 제2 소프트웨어 애플리케이션으로 전달하고; 하나 이상의 제스처 인식기들의 제2 세트 내의 적어도 하나의 제스처 인식기가 터치 입력들의 시퀀스를 인식하는지를 결정하고; 하나 이상의 제스처 인식기들의 제2 세트 내의 적어도 하나의 제스처 인식기가 터치 입력들의 시퀀스를 인식한다는 결정에 따라, 터치 입력들의 시퀀스를 인식하는 하나 이상의 제스처 인식기들의 제2 세트 내의 적어도 하나의 제스처 인식기를 이용하여 터치 입력들의 시퀀스를 처리하도록 구성된다.
일부 실시예들에 따르면, 전자 장치는 하나 이상의 뷰들을 표시하도록 구성되는 디스플레이 유닛; 내부 상태를 저장하도록 구성되는 메모리 유닛; 및 디스플레이 유닛 및 메모리 유닛에 결합되는 처리 유닛을 포함한다. 처리 유닛은 복수의 뷰를 갖는 뷰 계층 구조를 포함하는 소프트웨어를 실행하고; 뷰 계층 구조의 하나 이상의 뷰들의 표시를 가능하게 하고; 하나 이상의 소프트웨어 요소들을 실행하도록 구성된다. 각각의 소프트웨어 요소는 특정 뷰와 관련되며, 각각의 특정 뷰는 하나 이상의 이벤트 인식기들을 포함한다. 각각의 이벤트 인식기는 하나 이상의 서브이벤트들에 기초하는 하나 이상의 이벤트 정의들, 및 이벤트 핸들러를 구비한다. 이벤트 핸들러는 타겟에 대한 액션을 지정하며, 이벤트 인식기가 하나 이상의 이벤트 정의들의 특정 이벤트 정의에 대응하는 이벤트를 검출하는 것에 응답하여 액션을 타겟으로 전송하도록 구성된다. 처리 유닛은 하나 이상의 서브이벤트들의 시퀀스를 검출하고; 뷰 계층 구조의 뷰들 중 하나를 히트 뷰로서 식별하도록 구성된다. 히트 뷰는 뷰 계층 구조 내의 어떤 뷰들이 활성적으로 관련된 뷰들인지를 설정한다. 처리 유닛은 각각의 서브이벤트를 뷰 계층 구조 내의 각각의 활성적으로 관련된 뷰에 대한 이벤트 인식기들로 전달하도록 구성된다. 뷰 계층 구조 내의 활성적으로 관련된 뷰들에 대한 적어도 하나의 이벤트 인식기는 복수의 이벤트 정의를 가지며, 복수의 이벤트 정의 중 하나는 전자 장치의 내부 상태에 따라 선택되고, 적어도 하나의 이벤트 인식기는 선택된 이벤트 정의에 따라 서브이벤트들의 시퀀스 내의 다음 서브이벤트를 처리하기 전에 각각의 서브이벤트를 처리한다.
도 1a-1c는 일부 실시예들에 따른 전자 장치들을 나타내는 블록도들이다.
도 2는 일부 실시예들에 따른 예시적인 전자 장치의 입/출력 처리 스택의 도면이다.
도 3a는 일부 실시예들에 따른 예시적인 뷰 계층 구조를 나타낸다.
도 3b 및 3c는 일부 실시예들에 따른 예시적인 이벤트 인식기 메소드들 및 데이터 구조들을 나타내는 블록도들이다.
도 3d는 일부 실시예들에 따른 이벤트 처리를 위한 예시적인 컴포넌트들을 나타내는 블록도이다.
도 3e는 일부 실시예들에 따른 제스처 인식기들의 예시적인 클래스들 및 인스턴스들을 나타내는 블록도이다.
도 3f는 일부 실시예들에 따른 이벤트 정보의 흐름을 나타내는 블록도이다.
도 4a 및 4b는 일부 실시예들에 따른 예시적인 상태 기계들을 나타내는 흐름도들이다.
도 4c는 일부 실시예들에 따른 예시적인 서브이벤트들의 세트에 대한 도 4a 및 4b의 예시적인 상태 기계들을 나타낸다.
도 5a-5c는 일부 실시예들에 따른 예시적인 이벤트 인식기 상태 기계들을 갖는 예시적인 서브이벤트 시퀀스들을 나타낸다.
도 6a 및 6b는 일부 실시예들에 따른 이벤트 인식 방법 흐름도들이다.
도 7a-7s는 일부 실시예들에 따른, 동시에 열린 애플리케이션들을 통해 내비게이션하기 위해 이벤트 인식기들에 의해 인식되는 예시적인 사용자 인터페이스들 및 사용자 입력들을 나타낸다.
도 8a 및 8b는 일부 실시예들에 따른 이벤트 인식 방법을 나타내는 흐름도들이다.
도 9a-9c는 일부 실시예들에 따른 이벤트 인식 방법을 나타내는 흐름도들이다.
도 10a-10b는 일부 실시예들에 따른 이벤트 인식 방법을 나타내는 흐름도들이다.
도 11은 일부 실시예들에 따른 전자 장치의 기능 블록도이다.
도 12는 일부 실시예들에 따른 전자 장치의 기능 블록도이다.
도 13은 일부 실시예들에 따른 전자 장치의 기능 블록도이다.
도면들 전반에서 동일한 참조 번호들은 대응하는 요소들을 나타낸다.
소형 스크린을 갖는 전자 장치들(예를 들어, 스마트폰 및 태블릿)은 장치 상에서 다수의 애플리케이션이 실행되고 있을 수 있더라도 한 번에 하나의 애플리케이션만을 표시한다. 이러한 장치들 중 다수는 제스처를 터치 입력으로서 수신하도록 구성되는 터치 감지 디스플레이를 갖는다. 이러한 장치들에서, 사용자는 숨겨진 애플리케이션(예를 들어, 배경에서 실행되는 애플리케이션 런처(launcher) 소프트웨어 애플리케이션과 같이, 배경에서 실행되고 있고 전자 장치의 디스플레이 상에 현재 표시되지 않은 애플리케이션)에 의해 제공되는 동작들을 수행하기를 원할 수 있다. 숨겨진 애플리케이션에 의해 제공되는 동작들을 수행하기 위한 기존의 방법들은 통상적으로 먼저 숨겨진 애플리케이션을 표시한 후에 이제 표시된 애플리케이션에 터치 입력들을 제공하는 것을 필요로 한다. 따라서, 기존의 방법들은 추가적인 단계들을 필요로 한다. 더구나, 사용자는 숨겨진 애플리케이션을 보기를 원하지 않을 수 있으나, 숨겨진 애플리케이션에 의해 제공되는 동작을 수행하기를 원할 수 있다. 후술하는 실시예들에서는, 숨겨진 애플리케이션에 터치 입력들을 전달하고, 숨겨진 애플리케이션의 표시 없이 숨겨진 애플리케이션을 이용하여 터치 입력들을 처리함으로써, 숨겨진 애플리케이션과 상호작용하기 위한 개량된 방법들이 달성된다. 따라서, 이러한 방법들은 숨겨진 애플리케이션과의 상호작용을 간소화하며, 따라서 숨겨진 애플리케이션을 표시하기 위한 추가적인 별도의 단계들을 필요로 하지 않으면서, 제스처 입력에 기초하여 숨겨진 애플리케이션을 제어하고 그와 상호작용하는 능력을 제공한다.
게다가, 일부 실시예들에서, 그러한 전자 장치들은 복수의 제스처 정의를 갖는 적어도 하나의 제스처 인식기를 구비한다. 이것은 제스처 인식기가 상이한 별개의 동작 모드들에서 동작하는 것을 돕는다. 예를 들어, 장치는 정상 동작 모드 및 (예를 들어, 제한된 시력을 가진 사람들을 위한) 액세스 가능성 동작 모드를 가질 수 있다. 정상 동작 모드에서는, 애플리케이션들 사이에서 이동하기 위해 다음 애플리케이션 제스처가 사용되며, 다음 애플리케이션 제스처는 3 손가락 좌측 스와이프 제스처로서 정의된다. 액세스 가능성 동작 모드에서, 3 손가락 좌측 스와이프 제스처는 상이한 기능을 수행하는 데 사용된다. 따라서, 액세스 가능성 동작 모드에서는 다음 애플리케이션 제스처에 대응하기 위해 3 손가락 좌측 스와이프와 다른 제스처(예로서, 액세스 가능성 동작 모드에서 4 손가락 좌측 스와이프 제스처)가 필요하다. 다음 애플리케이션 제스처와 관련된 다수의 제스처 정의를 가짐으로써, 장치는 현재의 동작 모드에 따라 다음 애플리케이션 제스처에 대한 제스처 정의들 중 하나를 선택할 수 있다. 이것은 상이한 동작 모드들에서 제스처 인식기를 사용하는 데 있어서의 유연성을 제공한다. 일부 실시예들에서는, 복수의 제스처 정의를 갖는 복수의 제스처 인식기가 동작 모드에 따라 조정된다(예를 들어, 정상 동작 모드에서 3개의 손가락을 이용하여 수행되는 제스처들은 액세스 가능성 동작 모드에서는 4개의 손가락을 이용하여 수행된다).
아래에서, 도 1a-1c 및 2는 예시적인 장치들의 설명을 제공한다. 도 3a-3f는 이벤트 처리를 위한 컴포넌트들 및 그러한 컴포넌트들의 동작(예로서, 이벤트 정보의 흐름)을 설명한다. 도 4a-4c 및 5a-5c는 이벤트 인식기들의 동작들을 더 상세히 설명한다. 도 6a-6b는 이벤트 인식 방법들을 나타내는 흐름도들이다. 도 7a-7s는 도 8a-8b, 9a-9c 및 10에서의 이벤트 인식 방법들을 이용하는 동작들을 나타내는 예시적인 사용자 인터페이스들이다. 도 8a-8b는 숨겨진 열린 애플리케이션의 제스처 핸들러를 이용하여 이벤트 정보를 처리하는 이벤트 인식 방법을 나타내는 흐름도들이다. 도 9a-9c는 숨겨진 열린 애플리케이션 또는 표시된 애플리케이션의 제스처 인식기를 이용하여 이벤트 정보를 조건부로 처리하는 이벤트 인식 방법을 나타내는 흐름도들이다. 도 10은 단일 이벤트 인식기에 대한 복수의 이벤트 정의 중의 이벤트 정의를 선택하는 이벤트 인식 방법을 나타내는 흐름도이다.
이하, 첨부된 도면에 그 예가 도시된 실시예들을 상세하게 참고할 것이다. 이하의 상세한 설명에서, 본 발명의 철저한 이해를 제공하기 위하여 다수의 특정 세부사항이 상술된다. 그러나, 이러한 특정 세부사항 없이도 본 발명이 실시될 수 있음은 당업자에게 자명할 것이다. 일부 예들에서는, 실시예의 양태를 불필요하게 모호하게 하지 않도록, 공지된 방법, 절차, 컴포넌트, 회로 및 네트워크에 대해서는 상세하게 설명하지 않았다.
또한, 본 명세서에 제1, 제2 등의 용어가 다양한 구성요소를 설명하기 위해 사용될 수 있지만, 이들 구성요소는 이러한 용어에 의해 한정되지 않아야 한다. 이러한 용어는 구성요소 간의 구별을 위해서 사용될 뿐이다. 예컨대, 본 발명의 기술적 사상으로부터 벗어나지 않고, 제1 접촉은 제2 접촉이라고 지칭될 수 있고, 유사하게 제2 접촉은 제1 접촉이라고 지칭될 수 있다. 제1 접촉 및 제2 접촉은 모두 접촉이지만, 이들은 동일한 접촉은 아니다.
본 발명의 명세서에 사용된 용어는 특정 실시예를 설명하기 위한 것일 뿐이며 본 발명을 제한하는 것으로 의도된 것이 아니다. 본 발명의 명세서 및 첨부된 특허청구범위에 사용된, "일", "하나의" 및 "상기"라는 단수형은 문맥상 명확하게 달리 지적하지 않은 이상 복수형도 포함하는 것으로 의도된 것이다. 또한, 본 명세서에 사용된 "및/또는"이라는 용어는 열거된 관련 아이템들 중 하나 이상의 아이템의 가능한 모든 조합을 지칭하고 포함하는 것임을 이해할 것이다. "구비한다", "구비하는", "포함한다" 및/또는 "포함하는"이라는 용어는, 본 명세서에서 사용되는 경우, 언급된 특징, 정수, 단계, 동작, 구성요소 및/또는 컴포넌트의 존재를 나타내지만, 하나 이상의 다른 특징, 정수, 단계, 동작, 구성요소, 컴포넌트 및/또는 이들의 그룹의 존재 또는 추가를 배제하지 않음을 더 이해할 것이다.
본 명세서에 사용되는 "~인 경우"이란 용어는 상황에 따라 "~인 때" 또는 "~와 동시에" 또는 "결정에 응답하여" 또는 "검출에 응답하여"를 의미하는 것으로 해석될 수 있다. 유사하게, "결정되는 경우" 또는 "[언급된 조건 또는 이벤트가] 검출되는 경우"이란 구문은 문맥에 따라 "결정되면" 또는 "결정에 응답하여" 또는 "(언급된 조건 또는 이벤트가) 검출되면" 또는 "(언급된 조건 또는 이벤트의) 검출에 응답하여"를 의미하는 것으로 해석되어야 한다.
본 명세서에서 사용되는 "이벤트"라는 용어는 장치의 하나 이상의 센서들에 의해 검출되는 입력을 지칭한다. 구체적으로, "이벤트"라는 용어는 터치 감지 표면 상의 터치를 포함한다. 이벤트는 하나 이상의 서브이벤트들을 포함한다. 서브이벤트들은 통상적으로 이벤트에 대한 변경들을 지칭한다(예를 들어, 터치의 터치 다운, 터치 이동 및 리프트-오프(lift-off)는 서브이벤트들일 수 있다). 하나 이상의 서브이벤트들의 시퀀스 내의 서브이벤트들은 특히, 키 누름, 키 누름 유지, 키 누름 해제, 버튼 누름, 버튼 누름 유지, 버튼 누름 해제, 조이스틱 이동, 마우스 이동, 마우스 버튼 누름, 마우스 버튼 해제, 펜 스타일러스 터치, 펜 스타일러스 이동, 펜 스타일러스 해제, 구두 명령, 검출된 눈 이동, 바이오메트릭 입력, 및 검출된 사용자의 생리적 변화를 포함하지만 이에 한정되지 않는 많은 형태를 포함할 수 있다. 이벤트는 단일 서브이벤트(예를 들어, 장치의 짧은 측방 운동)를 포함할 수 있으므로, 본 명세서에서 사용되는 바와 같은 "서브이벤트"라는 용어는 이벤트도 지칭한다.
본 명세서에서 사용되는 "이벤트 인식기" 및 "제스처 인식기"라는 용어는 제스처 또는 다른 이벤트들(예로서, 장치의 운동)을 인식할 수 있는 인식기를 지칭하기 위해 상호 교체 가능하게 사용된다. 본 명세서에서 사용되는 "이벤트 핸들러" 및 "제스처 핸들러"라는 용어는 이벤트/서브이벤트 또는 제스처의 인식에 응답하여 사전 정의된 동작들의 세트(예로서, 데이터 갱신, 객체(들) 갱신 및/또는 표시 갱신)를 수행하는 핸들러를 지칭하기 위해 상호 교체 가능하게 사용된다.
전술한 바와 같이, 터치 감지 표면을 입력 장치로서 갖는 일부 장치들에서는, 터치 기반 제스처들의 제1 세트(예를 들어, 탭, 더블 탭, 수평 스와이프, 수직 스와이프 중 둘 이상)가 특정 상황에서(예를 들어, 제1 애플리케이션의 특정 모드에서) 적절한 입력들로서 인식되며, 터치 기반 제스처들의 다른 상이한 세트들이 다른 상황들(예를 들어, 상이한 애플리케이션들 및/또는 제1 애플리케이션 내에서의 상이한 모드들 또는 상황들)에서 적절한 입력들로서 인식된다. 결과적으로, 터치 기반 제스처들을 인식하고 그에 응답하는 데 필요한 소프트웨어 및 논리는 복잡해질 수 있으며, 애플리케이션이 갱신되거나 새로운 애플리케이션이 컴퓨팅 장치에 추가될 때마다 수정을 필요로 할 수 있다. 본 명세서에서 설명되는 실시예들은 이벤트들 및/또는 제스처 입력들을 처리하기 위한 포괄적인 프레임워크를 제공함으로써 이러한 문제들을 해결한다.
후술하는 실시예들에서는, 터치 기반 제스처들이 이벤트들이다. 사전 정의된 이벤트, 예를 들어 애플리케이션의 현재 상황에서의 적절한 입력에 대응하는 이벤트의 인식시에, 이벤트에 관한 정보가 애플리케이션으로 전달된다. 더구나, 각각의 이벤트는 서브이벤트들의 시퀀스로서 정의된다. 다중 터치 디스플레이 장치(본 명세서에서 종종 "스크린"이라고 함) 또는 다른 다중 터치 감지 표면을 갖고, 다중 터치 기반 제스처들을 수신하는 장치들에서, 다중 터치 기반 이벤트를 정의하는 서브이벤트들은 (둘 이상의 손가락이 장치의 터치 감지 표면과 동시에 접촉하는 것을 필요로 하는) 다중 터치 서브이벤트들을 포함할 수 있다. 예를 들어, 다중 터치 감지 디스플레이를 갖는 장치에서, 서브이벤트들의 각각의 다중 터치 시퀀스는 사용자의 손가락이 처음 스크린을 터치할 때 시작될 수 있다. 하나 이상의 추가적인 손가락들이 후속하여 또는 동시에 스크린을 터치할 때 추가적인 서브이벤트들이 발생할 수 있으며, 스크린을 터치하는 손가락들 모두가 스크린을 가로질러 이동할 때 또 다른 서브이벤트들이 발생할 수 있다. 시퀀스는 사용자의 손가락들 중 마지막 손가락이 스크린으로부터 떨어질 때 종료된다.
터치 감지 표면을 갖는 장치에서 실행되는 애플리케이션을 제어하기 위해 터치 기반 제스처들을 사용할 때, 터치들은 시간 및 공간 양태들 양자를 갖는다. 페이즈라고 하는 시간 양태는 터치가 정확히 언제 시작되었는지, 터치가 이동하고 있는지 또는 정지해 있는지 그리고 터치가 언제 종료하는지, 즉 손가락이 스크린으로부터 언제 떨어지는지를 나타낸다. 터치의 공간 양태는 터치가 발생하는 뷰들 또는 사용자 인터페이스 윈도들의 세트이다. 터치가 검출되는 뷰들 또는 윈도들은 프로그램 또는 뷰 계층 구조 내의 프로그램 레벨들에 대응할 수 있다. 예를 들어, 터치가 검출되는 최저 레벨 뷰는 히트 뷰로 지칭될 수 있으며, 적절한 입력들로서 인식되는 이벤트들의 세트는 터치 기반 제스처를 시작하는 초기 터치의 히트 뷰에 적어도 부분적으로 기초하여 결정될 수 있다. 대안으로서 또는 추가로, 이벤트들은 프로그램 계층 구조 내의 하나 이상의 소프트웨어 프로그램들(즉, 소프트웨어 애플리케이션들)에 적어도 부분적으로 기초하여 적절한 입력들로서 인식된다. 예를 들어, 5 손가락 핀치 제스처는 5 손가락 핀치 제스처 인식기를 갖는 애플리케이션 런처에서는 적절한 입력으로서 인식되지만, 5 손가락 핀치 제스처 인식기를 갖지 않는 웹 브라우저 애플리케이션에서는 그렇지 않다.
도 1a-1c는 일부 실시예들에 따른 전자 장치(102)의 상이한 실시예들을 나타내는 블록도들이다. 전자 장치(102)는 데스크탑 컴퓨터 시스템, 랩탑 컴퓨터 시스템, 이동 전화, 스마트폰, 개인용 휴대 단말기 또는 내비게이션 시스템을 포함하지만 이에 한정되지 않는 임의의 전자 장치일 수 있다. 전자 장치(102)는 또한 사용자 인터페이스를 제공하도록 구성되는 터치 스크린 디스플레이(예를 들어, 도 1b의 터치 감지 디스플레이(156))를 갖는 휴대용 전자 장치, 사용자 인터페이스를 제공하도록 구성되는 터치 스크린 디스플레이를 갖는 컴퓨터, 터치 감지 표면 및 사용자 인터페이스를 제공하도록 구성되는 디스플레이를 갖는 컴퓨터, 또는 소비자 전자 장치, 이동 전화, 비디오 게임 시스템, 전자 음악 플레이어, 태블릿 PC, 전자 서적 판독 시스템, 전자 서적, PDA, 전자 오거나이저, 이메일 장치, 랩탑 또는 기타 컴퓨터, 키오스크 컴퓨터, 자동 판매기, 스마트 기구 등을 포함하지만 이에 한정되지 않는 임의의 다른 형태의 컴퓨팅 장치일 수 있다. 전자 장치(102)는 사용자 인터페이스(113)를 포함한다.
일부 실시예들에서, 전자 장치(102)는 터치 감지 디스플레이(156)(도 1b)를 포함한다. 이러한 실시예들에서, 사용자 인터페이스(113)는 전자 장치(102)와 상호작용하기 위해 사용자에 의해 사용되는 온-스크린 키보드(도시되지 않음)를 포함할 수 있다. 일부 실시예들에서, 전자 장치(102)는 또한 하나 이상의 입력 장치들(128)(예를 들어, 키보드, 마우스, 트랙볼, 마이크, 물리적 버튼(들), 터치패드 등)을 포함한다. 일부 실시예들에서, 터치 감지 디스플레이(156)는 둘 이상의 별개의 동시(또는 부분적으로 동시) 터치를 검출하는 능력을 가지며, 이러한 실시예들에서 디스플레이(156)는 때때로 본 명세서에서 다중 터치 디스플레이 또는 다중 터치 감지 디스플레이로서 지칭된다. 일부 실시예들에서, 하나 이상의 입력 장치들(128) 중 키보드는 전자 장치(102)로부터 분리되고 별개일 수 있다. 예를 들어, 키보드는 전자 장치(102)에 결합되는 유선 또는 무선 키보드일 수 있다.
일부 실시예들에서, 전자 장치(102)는 전자 장치(102)에 결합되는 디스플레이(126) 및 하나 이상의 입력 장치들(128)(예를 들어, 키보드, 마우스, 트랙볼, 마이크, 물리적 버튼(들), 터치패드, 트랙 패드 등)을 포함한다. 이러한 실시예들에서, 입력 장치들(128) 중 하나 이상은 옵션으로서 전자 장치(102)로부터 분리되고 별개일 수 있다. 예를 들어, 하나 이상의 입력 장치들은 키보드, 마우스, 트랙 패드, 트랙볼 및 전자 펜 중 하나 이상을 포함할 수 있으며, 이들 중 임의의 것은 옵션으로서 전자 장치로부터 분리될 수 있다. 옵션으로서, 장치(102)는 하나 이상의 가속도계들, 자이로스코프들, GPS 시스템들, 스피커들, 적외선(IR) 센서들, 바이오메트릭 센서들, 카메라들 등과 같은 하나 이상의 센서들(116)을 포함할 수 있다. 입력 장치들(128)로서의 또는 센서들(116)로서의 다양한 예시적인 장치들에 대한 위의 설명은 본 명세서에서 설명되는 실시예들의 동작에 중요하지 않으며, 본 명세서에서 입력 장치로서 설명되는 임의의 입력 또는 센서 장치는 센서로서 동등하게 잘 설명될 수 있고, 그 반대도 그렇다는 점에 유의한다. 일부 실시예들에서, 하나 이상의 센서들(116)에 의해 생성되는 신호들은 이벤트들을 검출하기 위한 입력 소스들로서 사용된다.
일부 실시예들에서, 전자 장치(102)는 전자 장치(102)에 결합되는 터치 감지 디스플레이(156)(즉, 터치 감지 표면을 갖는 디스플레이) 및 하나 이상의 입력 장치들(128)을 포함한다(도 1b). 일부 실시예들에서, 터치 감지 디스플레이(156)는 둘 이상의 별개의 동시(또는 부분 동시) 터치를 검출하는 능력을 가지며, 이러한 실시예들에서 디스플레이(156)는 때때로 본 명세서에서 다중 터치 디스플레이 또는 다중 터치 감지 디스플레이로서 지칭된다.
본 명세서에서 설명되는 전자 장치(102)의 일부 실시예들에서, 입력 장치들(128)은 전자 장치(102) 내에 배치된다. 다른 실시예들에서, 입력 장치들(128) 중 하나 이상은 전자 장치(102)로부터 분리되고 별개이다. 예컨대, 입력 장치들(128) 중 하나 이상은 케이블(예로서, USB 케이블) 또는 무선 접속(예로서, 블루투스 접속)에 의해 전자 장치(102)에 결합될 수 있다.
입력 장치들(128)을 사용할 때 또는 전자 장치(102)의 터치 감지 디스플레이(156) 상에서 터치 기반 제스처를 수행할 때, 사용자는 전자 장치(102)의 하나 이상의 CPU들(110)에 의해 처리되는 서브이벤트들의 시퀀스를 생성한다. 일부 실시예들에서, 전자 장치(102)의 하나 이상의 CPU들(110)은 서브이벤트들의 시퀀스를 처리하여 이벤트들을 인식한다.
전자 장치(102)는 통상적으로 하나 이상의 단일 또는 다중 코어 처리 유닛들("CPU" 또는 "CPU들")(110)은 물론, 하나 이상의 네트워크 또는 다른 통신 인터페이스들(112)을 포함한다. 전자 장치(102)는 메모리(111) 및 이러한 컴포넌트들을 상호접속하기 위한 하나 이상의 통신 버스들(115)을 포함한다. 통신 버스들(115)은 시스템 컴포넌트들(도시되지 않음)을 상호접속하고 그들 간의 통신들을 제어하는 회로(때때로 칩셋이라 함)를 포함할 수 있다. 전술한 바와 같이, 전자 장치(102)는 디스플레이(예로서, 디스플레이(126) 또는 터치 감지 디스플레이(156))를 포함하는 사용자 인터페이스들(113)을 포함한다. 또한, 통상적으로 전자 장치(102)는 입력 장치들(128)(예로서, 키보드, 마우스, 터치 감지 표면, 키패드 등)을 포함한다. 일부 실시예들에서, 입력 장치들(128)은 온-스크린 입력 장치(예로서, 디스플레이 장치의 터치 감지 표면)를 포함한다. 메모리(111)는 DRAM, SRAM, DDR RAM 또는 다른 랜덤 액세스 반도체 메모리 장치들과 같은 고속 랜덤 액세스 메모리를 포함할 수 있으며, 하나 이상의 자기 디스크 저장 장치들, 광 디스크 저장 장치들, 플래시 메모리 장치들 또는 다른 비휘발성 반도체 저장 장치들과 같은 비휘발성 메모리를 포함할 수 있다. 메모리(111)는 옵션으로서 CPU(들)(110)로부터 떨어져 위치하는 하나 이상의 저장 장치들을 포함할 수 있다. 메모리(111) 또는 대안으로서 메모리(111) 내의 비휘발성 메모리 장치(들)는 컴퓨터 판독 가능 저장 매체를 포함한다. 일부 실시예들에서, 메모리(111) 또는 메모리(111) 내의 비휘발성 메모리 장치(들)는 비일시적인 컴퓨터 판독 가능 저장 매체를 포함한다. 일부 실시예들에서, (전자 장치(102)의) 메모리(111) 또는 메모리(111)의 컴퓨터 판독 가능 저장 매체는 다음의 프로그램들, 모듈들 및 데이터 구조들, 또는 이들의 서브세트를 저장한다.
- 다양한 기본 시스템 서비스들을 처리하고, 하드웨어 종속 작업들을 수행하기 위한 절차들을 포함하는 운영 체제(118);
- 애플리케이션 소프트웨어(124) 내의 하나 이상의 소프트웨어 애플리케이션들의 거동을 수정하거나, 터치 감지 디스플레이(156) 또는 입력 장치(들)(128)로부터의 데이터를 수정하여 (예를 들어, 손상된 시력 또는 제한된 운동 능력을 가진 사람들을 위해) 애플리케이션 소프트웨어(124) 내의 하나 이상의 소프트웨어 애플리케이션들의 액세스 가능성 또는 그 안에 표시된 콘텐츠(예컨대, 웹페이지)에 대한 액세스 가능성을 향상시키는 데 사용되는 액세스 가능성 모듈(127)(도 1c);
- 하나 이상의 각각의 통신 인터페이스들(112)(유선 또는 무선) 및 인터넷, 기타 광역 네트워크, 근거리 네트워크, 도시 영역 네트워크 등과 같은 하나 이상의 통신 네트워크들을 통해 전자 장치(102)를 다른 장치들에 접속하는 데 사용되는 통신 모듈(120);
- 디스플레이(126) 또는 터치 감지 디스플레이(156) 상의 사용자 인터페이스 객체들을 포함하는 사용자 인터페이스들을 표시하는 데 사용되는 사용자 인터페이스 모듈(123)(도 1c);
프로세스들(예를 들어, 히트 뷰 결정, 스레드 관리 및/또는 이벤트 모니터링 등)을 제어하는 데 사용되는 제어 애플리케이션(132)(도 1c) - 일부 실시예들에서 제어 애플리케이션(132)은 런타임 애플리케이션을 포함하고, 다른 실시예들에서 런타임 애플리케이션은 제어 애플리케이션(132)을 포함함 -;
- 다양한 대안 실시예들에서 운영 체제(118) 내에서 또는 애플리케이션 소프트웨어(124)에서 구현될 수 있는 이벤트 전달 시스템(122) - 그러나, 일부 실시예들에서, 이벤트 전달 시스템(122)의 일부 양태들은 운영 체제(118)에서 구현될 수 있는 반면에 다른 양태들은 애플리케이션 소프트웨어(124)에서 구현될 수 있음 -;
- 하나 이상의 소프트웨어 애플리케이션들(예를 들어, 도 1c의 애플리케이션들(133-1, 133-2, 133-3), 이들 각각은 이메일 애플리케이션, 웹 브라우저 애플리케이션, 노트 애플리케이션, 텍스트 메시징 애플리케이션 등 중 하나일 수 있음)을 포함하는 애플리케이션 소프트웨어(124) - 각각의 소프트웨어 애플리케이션은 통상적으로 적어도 실행 동안 각각의 소프트웨어 애플리케이션 및 그의 컴포넌트들(예를 들어, 제스처 인식기들)의 상태를 지시하는 애플리케이션 상태를 가지며, 후술하는 애플리케이션 내부 상태(321)(도 3d)를 참조함 -; 및
- 소프트웨어 애플리케이션들 및 이들의 컴포넌트들(예를 들어, 제스처 인식기들 및 대리자들(delegates))의 상태를 지시하는 애플리케이션 상태; 어떤 애플리케이션들, 뷰들 또는 다른 정보가 터치 감지 디스플레이(156) 또는 디스플레이(126)의 다양한 영역들을 점유하는지를 지시하는 디스플레이 상태; 장치의 다양한 센서들(116), 입력 장치들(128) 및/또는 터치 감지 디스플레이(156)로부터 획득된 정보를 포함하는 센서 상태; 장치의 위치 및/또는 자세에 관한 위치 정보; 및 기타 상태들 중 하나 이상을 포함하는 장치/전역 내부 상태(134)(도 1c).
명세서 및 청구항들에서 사용되는 "열린 애플리케이션"이라는 용어는 (예를 들어, 장치/전역 내부 상태(134) 및/또는 애플리케이션 내부 상태(321)(도 3d)의 일부로서) 유지되는 상태 정보를 갖는 소프트웨어 애플리케이션을 지칭한다. 열린 애플리케이션은 아래의 타입의 애플리케이션들 중 임의의 애플리케이션이다.
- 디스플레이(126) 또는 터치 감지 디스플레이(156) 상에 현재 표시된 활성 애플리케이션(또는 대응하는 애플리케이션 뷰가 디스플레이 상에 현재 표시됨);
- 디스플레이(126) 또는 터치 감지 디스플레이(156) 상에 현재 표시되지 않지만, 대응하는 애플리케이션에 대한 하나 이상의 애플리케이션 프로세스들(예를 들어, 명령어들)이 하나 이상의 프로세서들(110)에 의해 처리(즉, 실행)되고 있는 배경 애플리케이션(또는 배경 프로세스);
- 현재 실행되지 않는 중지된 애플리케이션 - 이 애플리케이션은 휘발성 메모리(예를 들어, DRAM, SRAM, DDR RAM, 또는 메모리(111)의 다른 휘발성 랜덤 액세스 반도체 메모리 장치)에 저장됨 -; 및
- 실행되지 않는 동면하는(hibernated) 애플리케이션 - 이 애플리케이션은 비휘발성 메모리(예를 들어, 하나 이상의 자기 디스크 저장 장치들, 광 디스크 저장 장치들, 플래시 메모리 장치들, 또는 메모리(111)의 다른 비휘발성 반도체 저장 장치들)에 저장됨.
본 명세서에서 사용되는 "닫힌 애플리케이션(closed application)"이라는 용어는 유지되는 상태 정보가 없는 소프트웨어 애플리케이션들을 지칭한다(예를 들어, 닫힌 애플리케이션들에 대한 상태 정보는 장치의 메모리에 저장되지 않는다). 따라서, 애플리케이션을 닫는 것은 애플리케이션에 대한 애플리케이션 프로세스들을 중단 및/또는 제거하고, 애플리케이션에 대한 상태 정보를 장치의 메모리로부터 제거하는 것을 포함한다. 일반적으로, 제1 애플리케이션에 있는 동안 제2 애플리케이션을 여는 것은 제1 애플리케이션을 닫지 않는다. 제2 애플리케이션이 표시되고, 제1 애플리케이션의 표시가 중단될 때, 표시될 때 활성 애플리케이션이었던 제1 애플리케이션은 배경 애플리케이션, 중지된 애플리케이션 또는 동면하는 애플리케이션이 되지만, 제1 애플리케이션은 그의 상태 정보가 장치에 의해 유지되는 동안은 열린 애플리케이션으로 남는다.
전술한 요소들 각각은 전술한 메모리 장치들 중 하나 이상에 저장될 수 있다. 전술한 모듈, 애플리케이션 또는 시스템 요소들 각각은 본 명세서에서 설명되는 기능들을 수행하기 위한 명령어들의 세트에 대응한다. 명령어들의 세트는 하나 이상의 프로세서들(예를 들어, 하나 이상의 CPU들(110))에 의해 실행될 수 있다. 전술한 모듈들 또는 프로그램들(즉, 명령어들의 세트들)은 개별 소프트웨어 프로그램들, 절차들 또는 모듈들로서 구현될 필요가 없으며, 따라서 다양한 실시예들에서 이러한 모듈들의 다양한 서브세트들이 결합되거나 재배열될 수 있다. 일부 실시예들에서, 메모리(111)는 전술한 모듈들 및 데이터 구조들의 서브세트를 저장할 수 있다. 더구나, 메모리(111)는 전술하지 않은 추가적인 모듈들 및 데이터 구조들을 저장할 수 있다.
도 2는 본 발명의 일부 실시예들에 따른 예시적인 전자 장치 또는 기기(예로서, 장치(102))의 입/출력 처리 스택(200)의 도면이다. 장치의 하드웨어(예를 들어, 전자 회로)(212)는 입/출력 처리 스택(200)의 기저 레벨에 있다. 하드웨어(212)는 도 1a 및/또는 1b에 도시된 컴포넌트들과 같은 다양한 하드웨어 인터페이스 컴포넌트들을 포함할 수 있다. 하드웨어(212)는 전술한 센서들(116) 중 하나 이상도 포함할 수 있다. 입/출력 처리 스택(200)의 다른 요소들(202-210) 중 적어도 일부는 하드웨어(212)로부터 수신된 입력들을 처리하여 하드웨어 사용자 인터페이스(예로서, 디스플레이, 스피커, 장치 진동 액추에이터 등 중 하나 이상)를 통해 제공되는 다양한 출력들을 생성하는 소프트웨어 절차들 또는 소프트웨어 절차들의 부분들이다.
드라이버 또는 드라이버들(210)의 세트가 하드웨어(212)와 통신한다. 드라이버들(210)은 하드웨어(212)로부터 입력 데이터를 수신하여 처리할 수 있다. 코어 운영 체제("OS")(208)는 드라이버(들)(210)와 통신할 수 있다. 코어 OS(208)는 드라이버(들)(210)로부터 수신된 원시(raw) 입력 데이터를 처리할 수 있다. 일부 실시예들에서, 드라이버들(210)은 코어 OS(208)의 일부로서 간주될 수 있다.
OS 애플리케이션 프로그래밍 인터페이스들("OS API들")(206)의 세트는 코어 OS(208)와 통신하는 소프트웨어 절차들이다. 일부 실시예들에서, API들(206)은 장치의 운영 체제에 포함되지만, 코어 OS(208) 위의 레벨에 있다. API들(206)은 본 명세서에서 설명되는 전자 장치들 또는 기기들에서 실행되는 애플리케이션들에 의해 사용되도록 설계된다. 사용자 인터페이스(UI) API들(204)이 OS API들(206)을 이용할 수 있다. 장치에서 실행되는 애플리케이션 소프트웨어("애플리케이션들")(202)는 사용자와 통신하기 위해 UI API들(204)을 이용할 수 있다. 게다가, UI API들(204)은 더 낮은 레벨의 요소들과 통신할 수 있으며, 궁극적으로는 다양한 사용자 인터페이스 하드웨어, 예를 들어 다중 터치 디스플레이(156)와 통신할 수 있다. 일부 실시예들에서, 애플리케이션 소프트웨어(202)는 애플리케이션 소프트웨어(124)(도 1a) 내의 애플리케이션들을 포함한다.
입/출력 스택(200)의 각각의 계층은 그 아래의 계층을 이용할 수 있지만, 이것은 항상 요구되지는 않는다. 예를 들어, 일부 실시예들에서, 애플리케이션들(202)은 OS API들(206)과 직접 통신할 수 있다. 일반적으로, OS API 계층(206)에 또는 그 위에 있는 계층들은 코어 OS(208), 드라이버(들)(210) 또는 하드웨어(212)가 비공개(private)인 것으로 간주될 때 이들 계층에 직접 액세스하지 못할 수 있다. 계층(202) 및 UI API(204) 내의 애플리케이션들은 일반적으로 호(call)들을 OS API(206)로 지향시키며, 이어서 이 OS API는 계층들, 즉 코어 OS(208), 드라이버(들)(210) 및 하드웨어(212)에 액세스한다.
달리 말하면, 전자 장치(102)의 하나 이상의 하드웨어 요소들(212) 및 장치에서 실행되는 소프트웨어는 입력 장치(들)(128) 및/또는 터치 감지 디스플레이(156) 중 하나 이상에서 (제스처 내의 서브이벤트들에 대응할 수 있는) 입력 이벤트들을 검출하고, 입력 이벤트들이 애플리케이션(124)으로 전달될 이벤트에 대응하는지 그리고 언제 대응하는지를 결정하기 위해 현재 활성인 이벤트 인식기들의 세트에 의해 사용되는 (장치(102)의 메모리(111)에 저장되는) 다양한 데이터 구조들을 생성하거나 갱신한다. 이벤트 인식 방법들, 기기들 및 컴퓨터 프로그램 제품들의 실시예들이 아래에 더 상세히 설명된다.
도 3a는 이 예에서 가장 바깥쪽 뷰(302)에 표시되는 검색 프로그램인 예시적인 뷰 계층 구조(300)를 나타낸다. 가장 바깥쪽 뷰(302)는 일반적으로 사용자가 직접 상호작용할 수 있는 전체 사용자 인터페이스를 포함하며, 아래와 같은 하위 뷰들을 포함한다.
- 검색 결과들을 그룹화하고, 수직으로 스크롤될 수 있는 검색 결과 패널(304);
- 텍스트 입력들을 수신하는 검색 필드(306); 및
- 빠른 액세스를 위해 애플리케이션들을 그룹화하는 홈 행(home row)(310).
이 예에서, 각각의 하위 뷰는 더 낮은 레벨의 하위 뷰들을 포함한다. 다른 예들에서, 계층 구조(300) 내의 뷰 레벨들의 수는 계층 구조의 상이한 분기들에서 다를 수 있으며, 하나 이상의 하위 뷰들은 더 낮은 레벨의 하위 뷰들을 갖고, 하나 이상의 다른 하위 뷰들은 어떠한 그러한 더 낮은 레벨의 하위 뷰도 갖지 않는다. 도 3a에 도시된 예를 계속 설명하면, 검색 결과 패널(304)은 각각의 검색 결과에 대한 (패널(304)에 대해 하위인) 개별 하위 뷰들(305)을 포함한다. 여기서, 이 예는 맵 뷰(305)라고 하는 하위 뷰 내에 하나의 검색 결과를 표시한다. 검색 필드(306)는 여기서 콘텐츠 제거 아이콘 뷰(307)라고 하는 하위 뷰를 포함하며, 이 뷰는 사용자가 뷰(307) 내의 콘텐츠 제거 아이콘 상에서 특정 액션(예를 들어, 단일 터치 또는 탭 제스처)을 수행할 때 검색 필드의 콘텐츠를 제거한다. 홈 행(310)은 콘택(contacts) 애플리케이션, 이메일 애플리케이션, 웹 브라우저 및 아이팟 음악 인터페이스에 각각 대응하는 하위 뷰들(310-1, 310-2, 310-3, 310-4)을 포함한다.
터치 서브이벤트(301-1)가 가장 바깥쪽 뷰(302)에 표시된다. 터치 서브이벤트(301-1)의 위치가 검색 결과 패널(304) 및 맵 뷰(305) 양자 위에 있는 경우, 터치 서브이벤트는 이들 뷰 위에도 각각 301-2 및 301-3으로서 표시된다. 터치 서브이벤트의 활성적으로 관련된 뷰들은 뷰들, 즉 검색 결과 패널(304), 맵 뷰(305) 및 가장 바깥쪽 뷰(302)를 포함한다. 서브이벤트 전달 및 활성적으로 관련된 뷰들에 관한 추가적인 정보가 도 3b 및 3c와 관련하여 아래에 제공된다.
뷰들(및 대응하는 프로그램 레벨들)은 포개질(nest) 수 있다. 즉, 뷰는 다른 뷰들을 포함할 수 있다. 결과적으로, 제1 뷰와 관련된 소프트웨어 요소(들)(예를 들어, 이벤트 인식기들)는 제1 뷰 내의 뷰들과 관련된 하나 이상의 소프트웨어 요소들을 포함하거나 그에 링크될 수 있다. 일부 뷰들은 애플리케이션들과 관련될 수 있는 반면, 다른 뷰들은 그래픽 사용자 인터페이스, 윈도 관리자 등과 같은 고레벨 OS 요소들과 관련될 수 있다. 일부 실시예들에서, 일부 뷰들은 다른 OS 요소들과 관련된다. 일부 실시예들에서, 뷰 계층 구조는 복수의 소프트웨어 애플리케이션으로부터의 뷰들을 포함한다. 예를 들어, 뷰 계층 구조는 애플리케이션 런처로부터의 뷰(예를 들어, 홈 스크린) 및 웹 브라우저 애플리케이션으로부터의 뷰(예를 들어, 웹 페이지의 콘텐츠를 포함하는 뷰)를 포함할 수 있다.
프로그램 계층 구조는 계층 구조 내에 하나 이상의 소프트웨어 요소들 또는 소프트웨어 애플리케이션들을 포함한다. 이어지는 설명을 간소화하기 위하여, 일반적으로 뷰들 및 뷰 계층 구조만이 참조되지만, 일부 실시예들에서 방법은 복수의 프로그램 계층을 갖는 프로그램 계층 구조 및/또는 뷰 계층 구조와 함께 동작할 수 있다는 것을 이해해야 한다.
도 3b 및 3c는 이벤트 인식기들과 관련된 예시적인 메소드들 및 구조들을 나타낸다. 도 3b는 이벤트 핸들러들이 뷰들의 계층 구조 내의 특정 뷰들과 관련될 때의 이벤트 처리를 위한 메소드들 및 데이터 구조들을 나타낸다. 도 3c는 이벤트 핸들러들이 프로그램 레벨들의 계층 구조 내의 특정 레벨들과 관련될 때의 이벤트 처리를 위한 메소드들 및 데이터 구조들을 나타낸다. 이벤트 인식기 전역 메소드들(312, 350)은 각각 히트 뷰 및 히트 레벨 결정 모듈들(314, 352), 활성 이벤트 인식기 결정 모듈들(316, 354) 및 서브이벤트 전달 모듈들(318, 356)을 포함한다.
일부 실시예들에서, 전자 장치(102)는 이벤트 인식기 전역 메소드들(312, 350) 중 하나 이상을 포함한다. 일부 실시예들에서, 전자 장치(102)는 히트 뷰 결정 모듈(314) 및 히트 레벨 결정 모듈(352) 중 하나 이상을 포함한다. 일부 실시예들에서, 전자 장치(102)는 활성 이벤트 인식기 결정 모듈들(316, 354) 중 하나 이상을 포함한다. 일부 실시예들에서, 전자 장치(102)는 서브이벤트 전달 모듈들(318, 356) 중 하나 이상을 포함한다. 일부 실시예들에서, 이러한 메소드들 및 모듈들 중 하나 이상은 더 적거나 많은 메소드들 및 모듈들 내에 포함된다. 예를 들어, 일부 실시예들에서, 전자 장치(102)는 히트 뷰 결정 모듈(314) 및 히트 레벨 결정 모듈(352)의 기능을 포함하는 히트 뷰/레벨 결정 모듈을 포함한다. 일부 실시예들에서, 전자 장치(102)는 활성 이벤트 인식기 결정 모듈들(316, 354)의 기능을 포함하는 활성 이벤트 인식기 결정 모듈을 포함한다.
히트 뷰 및 히트 레벨 결정 모듈들(314, 352) 각각은 하나 이상의 뷰들(예를 들어, 3개의 주요 분기를 갖는 도 3a에 도시된 예시적인 뷰 계층 구조(300)) 및/또는 서브이벤트에 대응하는 프로그램 계층 구조 내의 하나 이상의 소프트웨어 요소들(예를 들어, 도 1c의 애플리케이션들(133) 중 하나 이상) 내의 어느 곳에서 서브이벤트가 발생했는지를 결정하기 위한 소프트웨어 절차들을 제공한다.
도 3b의 히트 뷰 결정 모듈(314)은 검색 결과(맵 뷰(305)) 및 검색 결과 패널 뷰(304) 상에서 서브이벤트, 예를 들어 가장 바깥쪽 뷰(302) 상에 301-1로 표시된 사용자 터치와 관련된 정보를 수신한다. 히트 뷰 결정 모듈(314)은 히트 뷰를 서브이벤트를 처리해야 하는 계층 구조 내의 최저 뷰로서 식별한다. 대부분의 상황들에서, 히트 뷰는 초기 서브이벤트(즉, 이벤트 또는 잠재적 이벤트를 형성하는 서브이벤트들의 시퀀스 내의 제1 서브이벤트)가 발생하는 최저 레벨 뷰이다. 일부 실시예들에서, 히트 뷰가 식별되면, 히트 뷰는 히트 뷰가 식별된 동일 터치 또는 입력 소스와 관련된 모든 서브이벤트들을 수신할 것이다. 일부 실시예들에서, 하나 이상의 다른 뷰들(예로서, 디폴트 또는 사전 정의된 뷰)은 히트 뷰가 수신하는 서브이벤트들 중 적어도 일부를 수신한다.
일부 실시예들에서, 도 3c의 히트 레벨 결정 모듈(352)은 유사한 프로세스를 이용할 수 있다. 예를 들어, 일부 실시예들에서, 히트 레벨 결정 모듈(352)은 히트 레벨을, 서브이벤트를 처리해야 하는 프로그램 계층 구조 내의 최저 레벨(또는 프로그램 계층 구조 내의 최저 프로그램 레벨 내의 소프트웨어 애플리케이션)로서 식별한다. 일부 실시예들에서, 히트 레벨이 식별되면, 히트 레벨 또는 히트 레벨 내의 소프트웨어 애플리케이션은 히트 레벨이 식별된 동일 터치 또는 입력 소스와 관련된 모든 서브이벤트들을 수신할 것이다. 일부 실시예들에서, 하나 이상의 다른 레벨들 또는 소프트웨어 애플리케이션들(예를 들어, 디폴트 또는 사전 정의된 소프트웨어 애플리케이션)은 히트 뷰가 수신하는 서브이벤트들 중 적어도 일부를 수신한다.
이벤트 인식기 전역 메소드들(312, 350)의 활성 이벤트 인식기 결정 모듈들(316, 354) 각각은 뷰 계층 구조 및/또는 프로그램 계층 구조 내의 어떤 뷰 또는 뷰들이 서브이벤트들의 특정 시퀀스를 수신해야 하는지를 결정한다. 도 3a는 서브이벤트(301)를 수신하는 활성 뷰들(302, 304, 305)의 예시적인 세트를 나타낸다. 도 3a의 예에서, 활성 이벤트 인식기 결정 모듈(316)은 가장 바깥쪽 뷰(302), 검색 결과 패널(304) 및 맵 뷰(305)가 활성적으로 관련된 뷰들인 것으로 결정하는데, 그 이유는 이러한 뷰들이 서브이벤트(301)에 의해 표현되는 터치의 물리적 위치를 포함하기 때문이다. 터치 서브이벤트(301)가 맵 뷰(305)와 관련된 영역으로 완전히 제한되는 경우에도, 검색 결과 패널(304) 및 가장 바깥쪽 뷰(302)는 맵 뷰(305)의 조상(ancestor)들이므로, 검색 결과 패널(304) 및 가장 바깥쪽 뷰(302)는 여전히 활성적으로 관련된 뷰들로 남는다는 점에 유의한다.
일부 실시예들에서, 활성 이벤트 인식기 결정 모듈들(316, 354)은 유사한 프로세스를 이용한다. 도 3a의 예에서, 활성 이벤트 인식기 결정 모듈(350)은 맵 애플리케이션이 활성적으로 관련된 것으로 결정하는데, 그 이유는 맵 애플리케이션의 뷰들이 표시되고, 그리고/또는 맵 애플리케이션의 뷰들이 서브이벤트(301)에 의해 표현되는 터치의 물리적 위치를 포함하기 때문이다. 터치 서브이벤트(301)가 맵 애플리케이션과 관련된 영역으로 완전히 제한되는 경우에도, 프로그램 계층 구조 내의 다른 애플리케이션들은 여전히 활성적으로 관련된 애플리케이션들(또는 활성적으로 관련된 프로그램 레벨들 내의 애플리케이션들)로서 남을 수 있다는 점에 유의한다.
서브이벤트 전달 모듈(318)은 서브이벤트들을 활성적으로 관련된 뷰들에 대한 이벤트 인식기들로 전달한다. 도 3a의 예를 이용하면, 사용자의 터치는 터치 마크들(301-1, 301-2, 301-3)에 의해 계층 구조의 상이한 뷰들 내에 표시된다. 일부 실시예들에서, 이러한 사용자의 터치를 나타내는 서브이벤트 데이터는 서브이벤트 전달 모듈(318)에 의해 활성적으로 관련된 뷰들에서의 이벤트 인식기들, 즉 최상위 레벨 뷰(302), 검색 결과 패널(304) 및 맵 뷰(305)로 전달된다. 또한, 뷰의 이벤트 인식기들은 (예를 들어, 뷰 내에서 초기 서브이벤트가 발생할 때) 뷰 내에서 시작되는 이벤트의 후속 서브이벤트들을 수신할 수 있다. 달리 말하면, 뷰는 뷰 밖에서 계속되는 경우에도 뷰에서 시작되는 사용자 상호작용들과 관련된 서브이벤트들을 수신할 수 있다.
일부 실시예들에서, 서브이벤트 전달 모듈(356)은 서브이벤트 전달 모듈(318)에 의해 사용되는 것과 유사한 프로세스에서 서브이벤트들을 활성적으로 관련된 프로그램 레벨들에 대한 이벤트 인식기들로 전달한다. 예를 들어, 서브이벤트 전달 모듈(356)은 서브이벤트들을 활성적으로 관련된 애플리케이션들에 대한 이벤트 인식기들로 전달한다. 도 3a의 예를 이용하면, 사용자의 터치(301)는 서브이벤트 전달 모듈(356)에 의해 활성적으로 관련된 뷰들에서의 이벤트 인식기들(예를 들어, 프로그램 계층 구조 내의 맵 애플리케이션 및 임의의 다른 활성적으로 관련된 애플리케이션들)로 전달된다. 일부 실시예들에서는, 디폴트 또는 사전 정의된 소프트웨어 애플리케이션이 프로그램 계층 구조 내에 디폴트로 포함된다.
일부 실시예들에서는, 개별 이벤트 인식기 구조(320 또는 360)가 생성되고, 각각의 활성적으로 관련된 이벤트 인식기에 대한 장치의 메모리에 저장된다. 이벤트 인식기 구조들(320, 360) 각각은 통상적으로 (아래에서 도 4a 및 4b를 참조할 때 더 상세히 설명되는) 이벤트 인식기 상태(334, 374) 및 상태 기계들(340, 380)을 각각 갖는 이벤트 인식기 고유 코드(338, 378)를 포함한다. 이벤트 인식기 구조(320)는 또한 뷰 계층 구조 참조(336)를 포함하는 반면, 이벤트 인식기 구조(360)는 프로그램 계층 구조 참조(376)를 포함한다. 특정 이벤트 인식기의 각각의 인스턴스는 정확히 하나의 뷰 또는 프로그램 레벨을 참조한다. (특정 이벤트 인식기에 대한) 뷰 계층 구조 참조(336) 또는 프로그램 계층 구조 참조(376)는 어떤 뷰 또는 프로그램 레벨이 각각의 이벤트 인식기에 논리적으로 결합되는지를 설정하는 데 사용된다.
뷰 메타데이터(341) 및 레벨 메타데이터(381)는 각각 뷰 또는 레벨에 관한 데이터를 포함할 수 있다. 뷰 또는 레벨 메타데이터는 이벤트 인식기들로의 서브이벤트 전달에 영향을 미칠 수 있는 적어도 아래의 특성들을 포함할 수 있다.
- 뷰 또는 프로그램 레벨에 대해 설정될 때, 뷰 또는 프로그램 레벨과 관련된 이벤트 인식기들은 물론, 뷰 또는 프로그램 계층 구조 내의 그의 조상들로의 서브이벤트 전달을 막는 저지(stop) 특성(342, 382).
- 뷰 또는 프로그램 레벨에 대해 설정될 때, 그 뷰 또는 프로그램 레벨과 관련된 이벤트 인식기들로의 서브이벤트 전달을 막지만, 뷰 또는 프로그램 계층 구조 내의 그의 조상들로의 서브이벤트 전달을 허용하는 스킵(skip) 특성(343, 383).
- 뷰에 대해 설정될 때, 뷰가 히트 뷰가 아닌 경우에 뷰와 관련된 이벤트 인식기들로의 서브이벤트들의 전달을 막는 노히트(NoHit) 스킵 특성(344, 384). 전술한 바와 같이, 히트 뷰 결정 모듈(314)은 히트 뷰(또는 히트 레벨 결정 모듈(352)의 경우에는 히트 레벨)를 서브이벤트를 처리해야 하는 계층 구조 내의 최저 뷰로서 식별한다.
이벤트 인식기 구조들(320, 360)은 각각 메타데이터(322, 362)를 포함할 수 있다. 일부 실시예들에서, 메타데이터(322, 362)는 이벤트 전달 시스템이 활성적으로 관련된 이벤트 인식기들로의 서브이벤트 전달을 어떻게 수행해야 하는지를 지시하는 구성 가능 특성들, 플래그들 및 리스트들을 포함한다. 일부 실시예들에서, 메타데이터(322,362)는 이벤트 인식기들이 어떻게 서로 상호작용할 수 있는지를 지시하는 구성 가능 특성들, 플래그들 및 리스트들을 포함할 수 있다. 일부 실시예들에서, 메타데이터(322, 362)는 서브이벤트들이 뷰 또는 프로그램 계층 구조 내의 다양한 레벨들로 전달되는지를 지시하는 구성 가능 특성들, 플래그들 및 리스트들을 포함할 수 있다. 일부 실시예들에서, 이벤트 인식기 메타데이터(322, 362) 및 뷰 또는 레벨 메타데이터(341, 381, 각각)의 조합은 모두 a) 활성적으로 관련된 이벤트 인식기들로의 서브이벤트 전달을 수행하고, b) 이벤트 인식기들이 어떻게 서로 상호작용할 수 있는지를 지시하고, c) 서브이벤트들이 뷰 또는 프로그램 계층 구조 내의 다양한 레벨들로 언제 전달되는지를 지시하도록 이벤트 전달 시스템을 구성하는 데 사용된다.
일부 실시예들에서, 각각의 이벤트 인식기는 이벤트 인식 액션(333, 373)을 이벤트 인식기의 구조(320, 360)의 필드들에 의해 지정되는 바와 같은 그의 각각의 타겟(335, 375)으로 전송한다는 점에 유의한다. 액션을 타겟으로 전송하는 것은 서브이벤트들을 각각의 히트 뷰 또는 레벨로 전송(및 지연 전송)하는 것과 별개이다.
대응하는 이벤트 인식기의 각각의 이벤트 인식기 구조(320, 360)에 저장되는 메타데이터 특성들은 다음 중 하나 이상을 포함한다.
- 이벤트 인식기에 대해 설정될 때, 이벤트 인식기에 의한 이벤트의 인식시에, 이벤트 전달 시스템은 활성적으로 관련된 뷰들 또는 프로그램 레벨들의 임의의 다른 이벤트 인식기들(예외 리스트(326, 366) 내에 목록화된 임의의 다른 이벤트 인식기들은 예외)로의 서브이벤트들의 전달을 중지해야 한다는 것을 지시하는 배타 플래그(exclusivity flag)(324, 364). 서브이벤트의 수신이 특정 이벤트 인식기로 하여금 그의 대응하는 배타 플래그(324 또는 364)에 의해 지시되는 바와 같이 배타 상태에 들어가게 할 때, 후속 서브이벤트는 배타 상태에 있는 이벤트 인식기(또한 예외 리스트(326, 366) 내에 목록화된 임의의 다른 이벤트 인식기들)로만 전달된다.
- 일부 이벤트 인식기 구조들(320, 360)은 배타 예외 리스트(326, 366)를 포함할 수 있다. 각각의 이벤트 인식기에 대한 이벤트 인식기 구조(320, 360) 내에 포함될 때, 이 리스트(326, 366)는, 존재할 경우에, 각각의 이벤트 인식기가 배타 상태에 들어간 후에도 서브이벤트들을 계속 수신할 이벤트 인식기들의 세트를 지시한다. 예를 들어, 단일 탭 이벤트에 대한 이벤트 인식기가 배타 상태에 들어가고, 현재 관련된 뷰들이 더블 탭 이벤트에 대한 이벤트 인식기를 포함하는 경우, 리스트(320, 360)는 더블 탭 이벤트 인식기를 목록화할 것이며, 따라서 단일 탭 이벤트가 검출된 후에도 더블 탭 이벤트가 인식될 수 있다. 따라서, 배타 예외 리스트(326, 366)는 이벤트 인식기들이 서브이벤트들의 공통 시퀀스들을 공유하는 상이한 이벤트들을 인식하는 것을 가능하게 하며, 예를 들어 단일 탭 이벤트 인식은 다른 이벤트 인식기들에 의한 더블 또는 트리플 탭의 후속 인식을 막지 않는다.
- 일부 이벤트 인식기 구조들(320, 360)은 대기 리스트(327, 367)를 포함할 수 있다. 각각의 이벤트 인식기에 대한 이벤트 인식기 구조(320, 360)에 포함될 때, 이 리스트(327, 367)는, 존재할 경우에, 각각의 이벤트 인식기가 각각의 이벤트를 인식할 수 있기 전에 이벤트 불가 또는 이벤트 취소 상태에 들어가야 하는 이벤트 인식기들의 세트를 지시한다. 사실상, 목록화된 이벤트 인식기들은 대기 리스트(327, 367)를 갖는 이벤트 인식기보다 높은 이벤트 인식 우선 순위를 갖는다.
- 이벤트 인식기에 대해 설정될 때, 이벤트 인식기로 하여금 서브이벤트들의 시퀀스가 이 이벤트 인식기의 이벤트 타입에 대응하지 않는 것으로 결정된 후까지 이벤트 인식기의 각각의 히트 뷰 또는 레벨로의 서브이벤트들(터치 시작 또는 손가락 다운 서브이벤트, 및 후속 이벤트들을 포함함)의 전송을 지연시키게 하는 터치 시작 지연 플래그(328, 368). 이 플래그는 제스처가 인식되는 경우에 히트 뷰 또는 레벨이 임의의 서브이벤트를 계속 보는 것을 방지하는 데 사용될 수 있다. 이벤트 인식기가 이벤트를 인식하지 못할 때, 터치 시작 서브이벤트(및 후속 터치 종료 서브이벤트)는 히트 뷰 또는 레벨로 전달될 수 있다. 일례에서, 히트 뷰 또는 레벨로의 그러한 서브이벤트들의 전달은 사용자 인터페이스로 하여금 객체와 관련된 액션의 호출 없이 그 객체를 간단히 강조하게 한다.
- 이벤트 인식기에 대해 설정될 때, 이벤트 인식기로 하여금 서브이벤트들의 시퀀스가 이 이벤트 인식기의 이벤트 타입에 대응하지 않는 것으로 결정될 때까지 이벤트 인식기의 각각의 히트 뷰 또는 레벨로의 서브이벤트(예를 들어, 터치 종료 서브이벤트)의 전송을 지연시키게 하는 터치 종료 지연 플래그(330, 370). 이것은 제스처가 나중에 인식되는 경우에 히트 뷰 또는 레벨이 터치 종료 서브이벤트에 작용하는 것을 방지하는 데 사용될 수 있다. 터치 종료 서브이벤트가 전송되지 않는 한, 터치 취소가 히트 뷰 또는 레벨로 전송될 수 있다. 이벤트가 인식되는 경우, 애플리케이션에 의한 대응하는 액션이 수행되며, 터치 종료 서브이벤트는 히트 뷰 또는 레벨로 전달된다.
- 이벤트 인식기에 대해 설정될 때, 이벤트 인식기로 하여금 서브이벤트들의 시퀀스가 이 이벤트 인식기의 이벤트 타입에 대응하지 않는 것으로 결정된 때 이벤트 인식기의 각각의 히트 뷰 또는 레벨로 터치 또는 입력 취소를 전송하게 하는 터치 취소 플래그(332, 372). 히트 뷰 또는 레벨로 전송되는 터치 또는 입력 취소는 이전의 서브이벤트(예를 들어, 터치 시작 서브이벤트)가 취소되었음을 지시한다. 터치 또는 입력 취소는 입력 소스 핸들러의 상태(도 4b 참조)가 입력 시퀀스 취소 상태(460))아래에 설명됨)에 들어가게 할 수 있다.
일부 실시예들에서, 예외 리스트(326, 366)은 또한 비배타 이벤트 인식기들에 의해 사용될 수 있다. 특히, 비배타 이벤트 인식기가 이벤트를 인식할 때, 이벤트를 인식한 이벤트 인식기의 예외 리스트(326, 366) 내에 목록화된 배타 이벤트 인식기들은 제외하고, 현재 활성인 뷰들과 관련된 배타 이벤트 인식기들로는 후속 서브이벤트들이 전달되지 않는다.
일부 실시예들에서, 이벤트 인식기들은 원하지 않는 서브이벤트들이 히트 뷰로 전달되는 것을 방지하기 위해 터치 종료 지연 플래그와 함께 터치 취소 플래그를 사용하도록 구성될 수 있다. 예를 들어, 단일 탭 제스처의 정의와 더블 탭 제스처의 제1 절반은 동일하다. 단일 탭 이벤트 인식기가 단일 탭을 성공적으로 인식하면, 원하지 않는 액션이 발생할 수 있다. 터치 종료 지연 플래그가 설정되는 경우, 단일 탭 이벤트 인식기는 단일 탭 이벤트가 인식될 때까지 서브이벤트들을 히트 뷰로 전송하지 못한다. 게다가, 단일 탭 이벤트 인식기의 대기 리스트는 더블 탭 이벤트 인식기를 식별할 수 있으며, 따라서 더블 탭 이벤트 인식기가 이벤트 불가능 상태에 들어갈 때까지 단일 탭 이벤트 인식기가 단일 탭을 인식하는 것을 방지할 수 있다. 대기 리스트의 사용은 더블 탭 제스처가 수행될 때 단일 탭과 관련된 액션들의 실행을 방지한다. 대신에, 더블 탭 이벤트의 인식에 응답하여, 더블 탭과 관련된 액션들만이 실행될 것이다.
특히, 전술한 바와 같은 터치 감지 표면들 상의 사용자 터치들의 형태들을 참조하면, 터치들 및 사용자 제스처들은 순간적일 필요가 없는 행위를 포함할 수 있으며, 예를 들어 터치는 일정 기간 동안 디스플레이에 대해 손가락을 이동시키거나 유지하는 행위를 포함할 수 있다. 그러나, 터치 데이터 구조는 특정 시간에 터치의 상태(또는 더 일반적으로 임의의 입력 소스의 상태)를 정의한다. 따라서, 터치 데이터 구조에 저장된 값들은 단일 터치의 과정 동안에 변경되어, 상이한 시점들에서의 단일 터치의 상태가 애플리케이션으로 전달되게 할 수 있다.
각각의 터치 데이터 구조는 다양한 필드를 포함할 수 있다. 일부 실시예들에서, 터치 데이터 구조들은 적어도 도 3b의 터치 고유 필드들(339) 또는 도 3c의 입력 소스 고유 필드들(379)에 대응하는 데이터를 포함할 수 있다.
예를 들어, 도 3b의 "뷰에 대한 제1 터치" 필드(345)(도 3c의 "레벨에 대한 제1 터치"에 대한 385)는 (뷰를 구현하는 소프트웨어 요소가 인스턴스화되었으므로) 터치 입력 구조가 특정 뷰에 대한 제1 터치를 정의하는지의 여부를 지시할 수 있다. "타임 스탬프" 필드(346, 386)는 터치 데이터 구조와 관련된 특정 시간을 지시할 수 있다.
옵션으로서, "정보" 필드(347, 387)는 터치가 기본 제스처인지를 지시하는 데 사용될 수 있다. 예를 들어, "정보" 필드(347, 387)는 터치가 스와이프인지 그리고 그렇다면 스와이프가 어느 방향을 향하는지를 지시할 수 있다. 스와이프는 하나 이상의 손가락의 직선 방향으로의 빠른 드래그이다. (후술하는) API 구현들은 터치가 스와이프인지를 결정하고, 그러한 정보를 "정보" 필드(347, 387)를 통해 애플리케이션으로 전달하며, 따라서 애플리케이션에 대해 터치가 스와이프인 경우에 필요했을 소정의 데이터 처리를 완화시켜 줄 수 있다.
옵션으로서, 도 3b의 "탭 카운트" 필드(348)(도 3c의 "이벤트 카운트" 필드(388))는 초기 터치의 위치에서 얼마나 많은 탭이 순차적으로 수행되었는지를 지시할 수 있다. 탭은 특정 위치에서의 터치 감지 패널에 대한 손가락의 빠른 누름 및 리프트 오프로 정의될 수 있다. 손가락이 패널의 동일 위치에서 연속적으로 빠르게 다시 누르고 해제하는 경우에 다수의 순차적인 탭이 발생할 수 있다. 이벤트 전달 시스템(122)은 탭들을 카운트하고, 이러한 정보를 "탭 카운트" 필드(348)를 통해 애플리케이션으로 중계할 수 있다. 동일 위치에서의 다수의 탭은 때때로 터치 인에이블드 인터페이스들에 대한 명령을 기억하는 데 유용하고 쉬운 것으로 간주된다. 따라서, 탭들을 카운트함으로써, 이벤트 전달 시스템(122)은 애플리케이션으로부터의 소정의 데이터 처리를 더 완화할 수 있다.
"페이즈" 필드(349, 389)는 터치 기반 제스처가 현재 속해 있는 특정 페이즈를 지시할 수 있다. 페이즈 필드(349, 389)는 터치 데이터 구조가 이전의 터치 데이터 구조들에 의해 참조되지 않은 새로운 터치를 정의한다는 것을 지시할 수 있는 "터치 페이즈 시작"과 같은 다양한 값들을 가질 수 있다. "터치 페이즈 이동" 값은 정의되는 터치가 이전 위치로부터 이동되었다는 것을 지시할 수 있다. "터치 페이즈 정지" 값은 터치가 동일 위치에 머물러 있다는 것을 지시할 수 있다. "터치 페이즈 종료" 값은 터치가 종료되었다는 것을(예를 들어, 사용자가 다중 터치 디스플레이의 표면으로부터 그의 손가락을 리프트 오프하였다는 것을) 지시할 수 있다. "터치 페이즈 취소" 값은 터치가 장치에 의해 취소되었다는 것을 지시할 수 있다. 취소된 터치는 사용자에 의해 반드시 종료되지는 않았지만 장치가 무시하기로 결정한 터치일 수 있다. 예를 들어, 장치는 터치가 부주의로(즉, 주머니에 휴대용 다중 터치 인에이블드 장치를 넣은 결과로서) 생성된 것으로 결정하고, 그러한 이유로 터치를 무시할 수 있다. "페이즈 필드"(349, 389)의 각각의 값은 정수일 수 있다.
따라서, 각각의 터치 데이터 구조는 특정 시간에(예를 들어, 터치가 정지해 있는지, 이동하고 있는지 등) 각각의 터치(또는 다른 입력 소스)와 관련하여 무엇이 발생하고 있는지는 물론, 터치와 관련된 다른 정보(위치 등)도 정의할 수 있다. 따라서, 각각의 터치 데이터 구조는 특정 순간에 특정 터치의 상태를 정의할 수 있다. 동일 시간을 참조하는 하나 이상의 터치 데이터 구조는 특정 뷰가 어느 순간에 수신하고 있는 모든 터치들의 상태들을 정의할 수 있는 터치 이벤트 데이터 구조 내에 추가될 수 있다(전술한 바와 같이, 일부 터치 데이터 구조들은 종료되어 더 이상 수신되지 않는 터치들도 참조할 수 있다). 뷰에서 발생하는 터치들을 설명하는 연속 정보를 소프트웨어에 제공하기 위해 시간이 지남에 따라 뷰를 구현하는 소프트웨어로 다수의 터치 이벤트 데이터 구조가 전송될 수 있다.
도 3d는 일부 실시예들에 따른, 이벤트 처리를 위한 예시적인 컴포넌트들(예를 들어, 이벤트 처리 컴포넌트들(390))을 나타내는 블록도이다. 일부 실시예들에서, 메모리(111)(도 1a)는 이벤트 인식기 전역 메소드들(312) 및 하나 이상의 애플리케이션들(예로서, 133-1 내지 133-3)을 포함한다.
일부 실시예들에서, 이벤트 인식기 전역 메소드들(312)은 이벤트 모니터(311), 히트 뷰 결정 모듈(314), 활성 이벤트 인식기 결정 모듈(316) 및 이벤트 디스패처(dispatcher) 모듈(315)을 포함한다. 일부 실시예들에서, 이벤트 인식기 전역 메소드들(312)은 이벤트 전달 시스템(122)(도 1a) 내에 위치한다. 일부 실시예들에서, 이벤트 인식기 전역 메소드들(312)은 운영 체제(118)(도 1a) 내에 구현된다. 대안으로서, 이벤트 인식기 전역 메소드들(312)은 각각의 애플리케이션(133-1) 내에 구현된다. 또 다른 실시예에서, 이벤트 인식기 전역 메소드들(312)은 독립 모듈로서 또는 메모리(111)에 저장된 다른 모듈(예를 들어, 접촉/이동 모듈(도시되지 않음))의 일부로서 구현된다.
이벤트 모니터(311)는 하나 이상의 센서들(116), 터치 감지 디스플레이(156) 및/또는 하나 이상의 입력 장치들(128)로부터 이벤트 정보를 수신한다. 이벤트 정보는 이벤트(예를 들어, 터치(156) 상의 사용자 터치, 다중 터치 제스처의 일부 또는 장치(102)의 움직임) 및/또는 서브이벤트(예를 들어, 터치 감지 디스플레이(156)를 가로지르는 터치의 이동)에 대한 정보를 포함한다. 예를 들어, 터치 이벤트에 대한 이벤트 정보는 터치의 위치 및 타임 스탬프 중 하나 이상을 포함한다. 유사하게, 스와이프 이벤트에 대한 이벤트 정보는 스와이프의 위치, 타임 스탬프, 방향 및 속도 중 둘 이상을 포함한다. 센서들(116), 터치 감지 디스플레이(156) 및 입력 장치들(128)은 이벤트 정보 및 서브이벤트 정보를 직접 또는 이벤트 정보를 검색 및 저장하는 주변 장치 인터페이스를 통해 이벤트 모니터(311)로 전송한다. 센서들(116)은 근접 센서, 가속도계(들), 자이로스코프들, 마이크 및 비디오 카메라 중 하나 이상을 포함한다. 일부 실시예들에서, 센서들(116)은 입력 장치들(128) 및/또는 터치 감지 디스플레이(156)도 포함한다.
일부 실시예들에서, 이벤트 모니터(311)는 요청들을 사전 결정된 간격으로 센서들(116) 및/또는 주변 장치 인터페이스로 전송한다. 이에 응답하여, 센서들(116) 및/또는 주변 장치 인터페이스는 이벤트 정보를 전송한다. 다른 실시예들에서, 센서들(116) 및 주변 장치 인터페이스는 중요한 이벤트(예를 들어, 사전 결정된 잡음 임계치를 넘는 그리고/또는 사전 결정된 지속 기간을 넘는 기간 동안의 입력의 수신)가 존재할 때만 이벤트 정보를 전송한다.
이벤트 모니터(311)는 이벤트 정보를 수신하고, 이벤트 정보를 이벤트 디스패처 모듈(315)로 중계한다. 일부 실시예들에서, 이벤트 모니터(311)는 이벤트 정보를 전달할 하나 이상의 각각의 애플리케이션(예로서, 133-1)을 결정한다. 일부 실시예들에서, 이벤트 모니터(311)는 또한 이벤트 정보를 전달할 하나 이상의 각각의 애플리케이션의 하나 이상의 각각의 애플리케이션 뷰(317)를 결정한다.
일부 실시예들에서, 이벤트 인식기 전역 메소드들(312)은 또한 히트 뷰 결정 모듈(314) 및/또는 활성 이벤트 인식기 결정 모듈(316)을 포함한다.
히트 뷰 결정 모듈(314)은, 존재하는 경우, 터치 감지 디스플레이(156)가 둘 이상의 뷰를 표시할 때 하나 이상의 뷰들 내의 어느 곳에서 이벤트 또는 서브이벤트가 발생했는지를 결정하기 위한 소프트웨어 절차들을 제공한다. 뷰들은 사용자가 디스플레이 상에서 볼 수 있는 뷰들 및 기타 요소들로 구성된다.
각각의 애플리케이션(예로서, 133-1)과 관련된 사용자 인터페이스의 다른 양태는 정보가 표시되고 터치 기반 제스처들이 발생하는, 본 명세서에서 때때로 애플리케이션 뷰들 또는 사용자 인터페이스 윈도들이라고 하는 뷰들(317)의 세트이다. 터치가 검출되는 (각각의 애플리케이션)의 애플리케이션 뷰들은 애플리케이션의 뷰 계층 구조 내의 특정 뷰에 대응할 수 있다. 예를 들어, 터치가 검출되는 최저 레벨 뷰는 히트 뷰라고 할 수 있으며, 적절한 입력들로서 인식되는 이벤트들의 세트는 터치 기반 제스처를 시작하는 초기 터치의 히트 뷰에 적어도 부분적으로 기초하여 결정될 수 있다.
히트 뷰 결정 모듈(314)은 이벤트들 및/또는 서브이벤트들과 관련된 정보를 수신한다. 애플리케이션이 계층 구조로 구성된 다수의 뷰를 가질 때, 히트 뷰 결정 모듈(314)은 히트 뷰를 이벤트 또는 서브이벤트를 처리해야 하는 계층 구조 내의 최저 뷰로서 식별한다. 대부분의 상황들에서, 히트 뷰는 초기 이벤트 또는 서브이벤트(즉, 제스처를 형성하는 이벤트들 및/또는 서브이벤트들의 시퀀스 내의 제1 이벤트 또는 서브이벤트)가 발생하는 최저 레벨 뷰이다. 히트 뷰가 히트 뷰 결정 모듈에 의해 식별되면, 히트 뷰는 통상적으로 그가 히트 뷰로서 식별된 동일 터치 또는 입력 소스와 관련된 모든 이벤트들 및/또는 서브이벤트들을 수신한다. 그러나, 히트 뷰는 언제나, 히트 뷰로서 식별된 동일 터치 또는 입력 소스와 관련된 모든 이벤트들 및/또는 서브이벤트들을 수신하는 단일 뷰는 아니다. 즉, 일부 실시예들에서, 다른 애플리케이션(예로서, 133-2) 또는 동일 애플리케이션의 다른 뷰도 히트 뷰가 터치 또는 입력 소스에 대해 결정되었는지에 관계없이 적어도 동일 터치 또는 입력 소스와 관련된 이벤트들 및/또는 서브이벤트들의 서브세트를 수신한다.
활성 이벤트 인식기 결정 모듈(316)은 뷰 계층 구조 내의 어떤 뷰 또는 뷰들이 이벤트들 및/또는 서브이벤트들의 특정 시퀀스를 수신해야 하는지를 결정한다. 일부 애플리케이션 상황들에서, 활성 이벤트 인식기 결정 모듈(316)은 히트 뷰만이 이벤트들 및/또는 서브이벤트들의 특정 시퀀스를 수신해야 하는 것으로 결정한다. 다른 애플리케이션 상황들에서, 활성 이벤트 인식기 결정 모듈(316)은 이벤트 또는 서브이벤트의 물리적 위치를 포함하는 모든 뷰들이 활성적으로 관련된 뷰들인 것으로 결정하고, 따라서 모든 활성적으로 관련된 뷰들이 이벤트들 및/또는 서브이벤트들의 특정 시퀀스를 수신해야 하는 것으로 결정한다. 다른 애플리케이션 상황들에서, 터치 이벤트들 및/또는 서브이벤트들이 하나의 특정 뷰와 관련된 영역으로 완전히 제한되는 경우에도, 계층 구조 내의 더 높은 뷰들은 여전히 활성적으로 관련된 뷰들로 남으며, 따라서 계층 구조 내의 더 높은 뷰들은 이벤트들 및/또는 서브이벤트들의 특정 시퀀스를 수신해야 한다. 추가로 또는 대안으로서, 활성 이벤트 인식기 결정 모듈(316)은 프로그램 계층 구조 내의 어느 애플리케이션(들)이 이벤트들 및/또는 서브이벤트들의 특정 시퀀스를 수신해야 하는지를 결정한다. 따라서, 일부 실시예들에서, 활성 이벤트 인식기 결정 모듈(316)은 프로그램 계층 구조 내의 각각의 애플리케이션이 이벤트들 및/또는 서브이벤트들의 특정 시퀀스를 수신해야 하는 것으로 결정한다. 일부 실시예들에서, 활성 이벤트 인식기 결정 모듈(316)은 프로그램 계층 구조 내의 복수의 애플리케이션이 이벤트들 및/또는 서브이벤트들의 특정 시퀀스를 수신해야 하는 것으로 결정한다.
이벤트 디스패처 모듈(315)은 이벤트 정보를 이벤트 인식기(본 명세서에서 "제스처 인식기"라고도 함)(예로서, 이벤트 인식기(325-1))로 디스패치한다. 활성 이벤트 인식기 결정 모듈(316)을 포함하는 실시예들에서, 이벤트 디스패처 모듈(315)은 이벤트 정보를 활성 이벤트 인식기 결정 모듈(316)에 의해 결정된 이벤트 인식기로 전달한다. 일부 실시예들에서, 이벤트 디스패처 모듈(315)은 이벤트 정보를 이벤트 큐에 저장하며, 이는 각각의 이벤트 인식기들(325)(또는 각각의 이벤트 인식기(325) 내의 이벤트 수신기(3031))에 의해 검색된다.
일부 실시예들에서, 각각의 애플리케이션(예를 들어, 133-1)은 애플리케이션이 활성이거나 실행될 때 터치 감지 디스플레이(156) 상에 표시된 현재 애플리케이션 뷰(들)를 지시하는 애플리케이션 내부 상태(321)를 포함한다. 일부 실시예들에서, 장치/전역 내부 상태(134)(도 1c)는 이벤트 인식기 전역 메소드들(312)에 의해 어느 애플리케이션(들)이 현재 활성인지를 결정하는 데 사용되며, 애플리케이션 내부 상태(321)는 이벤트 인식기 전역 메소드들(312)에 의해 이벤트 정보를 전달할 애플리케이션 뷰들(317)을 결정하는 데 사용된다.
일부 실시예들에서, 애플리케이션 내부 상태(312)는 애플리케이션(133-1)이 실행을 재개할 때 사용될 재개 정보, 표시되고 있는 정보를 지시하거나 애플리케이션(133-1)에 의해 표시될 준비가 된 사용자 인터페이스 상태 정보, 사용자로 하여금 애플리케이션(133-1)의 이전 상태 또는 뷰로 돌아가게 할 수 있는 상태 큐, 및 사용자에 의해 취해진 이전 액션들의 재실행/취소 큐 중 하나 이상과 같은 추가적인 정보를 포함한다. 일부 실시예들에서, 애플리케이션 내부 상태(321)는 상황 정보/텍스트 및 메타데이터(323)를 더 포함한다.
일부 실시예들에서, 애플리케이션(133-1)은 하나 이상의 애플리케이션 뷰들(317)을 포함하며, 이들 각각은 애플리케이션의 사용자 인터페이스의 각각의 뷰 내에서 발생하는 터치 이벤트들을 처리하기 위한 대응하는 명령어들(예로서, 대응하는 이벤트 핸들러(319))을 갖는다. 애플리케이션(133-1)의 적어도 하나의 애플리케이션 뷰(317)는 하나 이상의 이벤트 인식기들(325)을 포함한다. 통상적으로, 각각의 애플리케이션 뷰(317)는 복수의 이벤트 인식기(325)를 포함한다. 다른 실시예들에서, 이벤트 인식기들(325) 중 하나 이상은 사용자 인터페이스 키트(도시되지 않음) 또는 애플리케이션(133-1)이 메소드들 및 다른 특성들을 상속하는 더 높은 레벨의 객체와 같은 개별 모듈의 일부이다. 일부 실시예들에서, 각각의 애플리케이션 뷰(317)는 또한 데이터 갱신기, 객체 갱신기, GUI 갱신기 및/또는 수신된 이벤트 데이터 중 하나 이상을 포함한다.
각각의 애플리케이션(예로서, 133-1)은 또한 하나 이상의 이벤트 핸들러들(319)을 포함한다. 통상적으로, 각각의 애플리케이션(예로서, 133-1)은 복수의 이벤트 핸들러(319)를 포함한다.
각각의 이벤트 인식기(325-1)는 이벤트 디스패처 모듈(315)로부터 (직접 또는 애플리케이션(133-1)을 통해 간접적으로) 이벤트 정보를 수신하고, 이벤트 정보로부터 이벤트를 식별한다. 이벤트 인식기(325-1)는 이벤트 수신기(3031) 및 이벤트 비교기(3033)를 포함한다.
이벤트 정보는 이벤트(예로서, 터치) 또는 서브이벤트(예로서, 터치 이동)에 대한 정보를 포함한다. 이벤트 또는 서브이벤트에 따라, 이벤트 정보는 이벤트 또는 서브이벤트의 위치와 같은 추가 정보도 포함한다. 이벤트 또는 서브이벤트가 터치의 움직임과 관련될 때, 이벤트 정보는 서브이벤트의 속도 및 방향도 포함할 수 있다. 일부 실시예들에서, 이벤트들은 하나의 배향으로부터 다른 배향으로의(예를 들어, 세로 배향으로부터 가로 배향으로의 또는 그 반대로의) 장치의 회전을 포함하며, 이벤트 정보는 장치의 현재 배향(장치 자세라고도 함)에 대한 대응하는 정보를 포함한다.
이벤트 비교기(3033)는 이벤트 정보를 하나 이상의 사전 정의된 제스처 정의들(본 명세서에서 "이벤트 정의들"이라고 함)과 비교하고, 비교에 기초하여 이벤트 또는 서브이벤트를 결정하거나, 이벤트 또는 서브이벤트의 상태를 결정 또는 갱신한다. 일부 실시예들에서, 이벤트 비교기(3033)는 하나 이상의 제스처 정의들(3035)(전술한 바와 같이, 본 명세서에서 "이벤트 정의들"이라고도 함)을 포함한다. 제스처 정의들(3035)은 제스처들(예를 들어, 이벤트들 및/또는 서브이벤트들의 사전 정의된 시퀀스들), 예를 들어 제스처 1(3037-1), 제스처 2(3037-2) 등의 정의들을 포함한다. 일부 실시예들에서, 제스처 정의들(3035) 내의 서브이벤트들은 예를 들어, 터치 시작, 터치 종료, 터치 이동, 터치 취소 및 다중 터치를 포함한다. 일례에서, 제스처 1(3037-1)에 대한 정의는 표시된 객체 상의 더블 탭이다. 더블 탭은 예를 들어 제스처의 사전 결정된 페이즈 동안의 표시된 객체 상의 제1 터치(터치 시작), 제스처의 다음 사전 결정된 페이즈 동안의 제1 리프트 오프(터치 종료), 제스처의 후속 사전 결정된 페이즈 동안의 표시된 객체 상의 제2 터치(터치 시작) 및 제스처의 최종 사전 결정된 페이즈 동안의 제2 리프트 오프(터치 종료)를 포함한다. 다른 예에서, 제스처 2(3037-2)에 대한 정의는 표시된 객체 상의 드래깅을 포함한다. 드래깅은 예를 들어 표시된 객체 상의 터치(또는 접촉), 터치 감지 디스플레이(156)를 가로지르는 터치의 이동 및 터치의 리프트 오프(터치 종료)를 포함한다.
일부 실시예들에서, 이벤트 인식기(325-1)는 이벤트 전달(3039)에 대한 정보도 포함한다. 이벤트 전달(3039)에 대한 정보는 대응하는 이벤트 핸들러들(319)에 대한 참조들을 포함한다. 옵션으로서, 이벤트 전달(3039)에 대한 정보는 액션-타겟 쌍(들)을 포함한다. 일부 실시예들에서, 제스처(또는 제스처의 일부)의 인식에 응답하여, 이벤트 정보(예를 들어, 액션 메시지(들))는 액션-타겟 쌍(들)에 의해 식별된 하나 이상의 타겟으로 전송된다. 다른 실시예들에서, 제스처(또는 제스처의 일부)의 인식에 응답하여, 액션-타겟 쌍(들)이 활성화된다.
일부 실시예들에서, 제스처 정의들(3035)은 각각의 사용자 인터페이스 객체에 대한 제스처의 정의를 포함한다. 일부 실시예들에서, 이벤트 비교기(3033)는 어느 사용자 인터페이스 객체가 서브이벤트와 관련되는지를 결정하기 위해 히트 테스트를 수행한다. 예를 들어, 3개의 사용자 인터페이스 객체가 터치 감지 디스플레이(156) 상에 표시되는 애플리케이션 뷰에서, 터치 감지 디스플레이(156) 상에서 터치가 검출될 때, 이벤트 비교기(3033)는 존재할 경우에 3개의 사용자 인터페이스 객체 중 어느 것이 터치(이벤트)와 관련되는지를 결정하기 위해 히트 테스트를 수행한다. 각각의 표시된 객체가 각각의 이벤트 핸들러(319)와 관련되는 경우, 이벤트 비교기(3033)는 어느 이벤트 핸들러(319)가 활성화되어야 하는지를 결정하기 위해 히트 테스트의 결과를 이용한다. 예를 들어, 이벤트 비교기(3033)는 히트 테스트를 유발하는 이벤트 및 객체와 관련된 이벤트 핸들러(319)를 선택한다.
일부 실시예들에서, 각각의 제스처에 대한 각각의 제스처 정의(3037)는 이벤트들 및/또는 서브이벤트들의 시퀀스가 이벤트 인식기의 이벤트 타입에 대응하는지의 여부가 결정된 후까지 이벤트 정보의 전달을 지연시키는 지연된 액션들도 포함한다.
각각의 이벤트 인식기(325-1)가 이벤트들 및/또는 서브이벤트들의 시리즈가 제스처 정의들(3035) 내의 이벤트들 중 어느 것과도 매칭되지 않는 것으로 결정할 때, 각각의 이벤트 인식기(325-1)는 이벤트 실패 상태에 들어가며, 그 후에 각각의 이벤트 인식기(325-1)는 터치 기반 제스처의 후속 이벤트들 및/또는 서브이벤트들을 무시한다. 이러한 상황에서, 존재할 경우, 히트 뷰에 대해 활성으로 유지되는 다른 이벤트 인식기들은 진행하는 터치 기반 제스처의 이벤트들 및/또는 서브이벤트들을 계속 추적 및 처리한다.
일부 실시예들에서, 히트 뷰에 대한 이벤트 인식기가 남지 않은 때, 이벤트 정보는 뷰 계층 구조 내의 더 높은 뷰 내의 하나 이상의 이벤트 인식기들로 전송된다. 대안으로서, 히트 뷰에 대한 이벤트 인식기가 남지 않은 때, 이벤트 정보는 무시된다. 일부 실시예들에서, 뷰 계층 구조 내의 뷰들에 대한 이벤트 인식기가 남지 않은 때, 이벤트 정보는 프로그램 계층 구조 내의 더 높은 프로그램 레벨 내의 하나 이상의 이벤트 인식기들로 전송된다. 대안으로서, 뷰 계층 구조 내의 뷰들에 대한 이벤트 인식기가 남지 않은 때, 이벤트 정보는 무시된다.
일부 실시예들에서, 각각의 이벤트 인식기(325-1)는 이벤트 인식기 상태(334)를 포함한다. 이벤트 인식기 상태(334)는 각각의 이벤트 인식기(325-1)의 상태를 포함한다. 이벤트 인식기 상태들의 예들은 도 4a-4b 및 5a-5c와 관련하여 아래에 더 상세히 설명된다.
일부 실시예들에서, 이벤트 인식기 상태(334)는 인식기 메타데이터 및 특성들(3043)을 포함한다. 일부 실시예들에서, 인식기 메타데이터 및 특성들(3043)은 A) 이벤트 전달 시스템이 활성적으로 관련된 이벤트 인식기들로의 이벤트 및/또는 서브이벤트 전달을 어떻게 수행해야 하는지를 지시하는 구성 가능 특성들, 플래그들 및/또는 리스트들; B) 이벤트 인식기들이 어떻게 서로 상호작용하는지를 지시하는 구성 가능 특성들, 플래그들 및/또는 리스트들; C) 이벤트 인식기들이 어떻게 이벤트 정보를 수신하는지를 지시하는 구성 가능 특성들, 플래그들 및/또는 리스트들; D) 이벤트 인식기들이 어떻게 제스처를 인식할 수 있는지를 지시하는 구성 가능 특성들, 플래그들 및/또는 리스트들; E) 이벤트들 및/또는 서브이벤트들이 뷰 계층 구조 내의 다양한 레벨들로 전달되는지를 지시하는 구성 가능 특성들, 플래그들 및/또는 리스트들; 및 F) 대응하는 이벤트 핸들러들(319)에 대한 참조들 중 하나 이상을 포함한다.
일부 실시예들에서, 이벤트 인식기 상태(334)는 이벤트/터치 메타데이터(3045)를 포함한다. 이벤트/터치 메타데이터(3045)는, 검출되었고 제스처 정의들(3035)의 각각의 제스처 정의(3037)에 대응하는 각각의 이벤트/터치에 대한 이벤트/터치 정보를 포함한다. 이벤트/터치 정보는 각각의 이벤트/터치의 위치, 타임 스탬프, 속도, 방향, 거리, 스케일(또는 스케일 변화) 및 각도(또는 각도 변화) 중 하나 이상을 포함한다.
일부 실시예들에서, 각각의 이벤트 인식기(325)는 제스처의 하나 이상의 특정 이벤트들 및/또는 서브이벤트들이 인식될 때 각각의 이벤트 인식기(325)와 관련된 이벤트 핸들러(319)를 활성화한다. 일부 실시예들에서, 각각의 이벤트 인식기(325)는 이벤트와 관련된 이벤트 정보를 이벤트 핸들러(319)로 전달한다.
이벤트 핸들러(319)는 활성화시에 데이터 생성 및/또는 갱신, 객체들의 생성 및 갱신, 및 디스플레이 정보를 준비하고 이를 디스플레이(126) 또는 터치 감지 디스플레이(156) 상에 표시하기 위해 전송하는 것 중 하나 이상을 수행한다.
일부 실시예들에서, 각각의 애플리케이션 뷰(317-2)는 뷰 메타데이터(341)를 포함한다. 도 3b와 관련하여 전술한 바와 같이, 뷰 메타데이터(341)는 뷰에 관한 데이터를 포함한다. 옵션으로서, 뷰 메타데이터(341)는 저지 특성(342), 스킵 특성(343), 노히트 스킵 특성(344) 및 다른 뷰 메타데이터(329) 중 하나 이상을 포함한다.
일부 실시예들에서, 뷰 계층 구조 내의 제1의 활성적으로 관련된 뷰는 그 제1의 활성적으로 관련된 뷰와 관련된 이벤트 인식기들로의 각각의 서브이벤트의 전달을 방지하도록 구성될 수 있다. 이러한 거동은 스킵 특성(343)을 구현할 수 있다. 스킵 특성이 애플리케이션 뷰에 대해 설정될 때, 각각의 서브이벤트의 전달은 뷰 계층 구조 내의 다른 활성적으로 관련된 뷰들과 관련된 이벤트 인식기들에 대해 여전히 수행된다.
대안으로서, 뷰 계층 구조 내의 제1의 활성적으로 관련된 뷰는 제1의 활성적으로 관련된 뷰가 히트 뷰가 아닌 경우에 제1의 활성적으로 관련된 뷰와 관련된 이벤트 인식기들로의 각각의 서브이벤트의 전달을 방지하도록 구성될 수 있다. 이러한 거동은 조건부 노히트 스킵 특성(344)을 구현할 수 있다.
일부 실시예들에서, 뷰 계층 구조 내의 제2의 활성적으로 관련된 뷰는 제2의 활성적으로 관련된 뷰와 관련된 이벤트 인식기들로의 그리고 제2의 활성적으로 관련된 뷰의 조상들과 관련된 이벤트 인식기들로의 각각의 서브이벤트의 전달을 방지하도록 구성된다. 이러한 거동은 저지 특성(342)을 구현할 수 있다.
도 3e는 일부 실시예들에 따른 제스처 인식기들(예로서, 이벤트 처리 컴포넌트들(390))의 예시적인 클래스들 및 인스턴스들을 나타내는 블록도이다.
소프트웨어 애플리케이션(예를 들어, 애플리케이션(133-1))은 하나 이상의 이벤트 인식기들(3040)을 갖는다. 일부 실시예들에서, 각각의 이벤트 인식기(예를 들어, 3040-2)는 이벤트 인식기 클래스이다. 각각의 이벤트 인식기(예로서, 3040-2)는 이벤트 인식기 고유 코드(338)(예를 들어, 이벤트 인식기들의 동작을 정의하는 명령어들의 세트) 및 상태 기계(340)를 포함한다.
일부 실시예들에서, 소프트웨어 애플리케이션(예를 들어, 애플리케이션(133-1))의 애플리케이션 상태(321)는 이벤트 인식기들의 인스턴스들을 포함한다. 이벤트 인식기의 각각의 인스턴스는 상태(예를 들어, 이벤트 인식기 상태(334))를 갖는 객체이다. 각각의 이벤트 인식기 인스턴스의 "실행"은 대응하는 이벤트 인식기 고유 코드(예를 들어, 338)를 실행하고 이벤트 인식기 인스턴스(3047)의 상태(334)를 갱신 또는 유지함으로써 구현된다. 이벤트 인식기 인스턴스(3047)의 상태(334)는 이벤트 인식기 인스턴스의 상태 기계(340)의 상태(3038)를 포함한다.
일부 실시예들에서, 애플리케이션 상태(321)는 복수의 이벤트 인식기 인스턴스(3047)를 포함한다. 각각의 이벤트 인식기 인스턴스(3047)는 통상적으로 애플리케이션의 뷰에 결합된(또는 "부착된") 이벤트 인식기에 대응한다. 일부 실시예들에서, 하나 이상의 이벤트 인식기 인스턴스들(3047)은 프로그램 계층 구조 내의 각각의 애플리케이션의 어떠한 특정 뷰에 대한 참조도 없이 각각의 애플리케이션에 결합된다. 일부 실시예들에서, 애플리케이션 상태(321)는 각각의 이벤트 인식기(예를 들어, 3040-2)의 복수의 인스턴스(예로서, 3047-1 내지 3047-L)를 포함한다. 일부 실시예들에서, 애플리케이션 상태(321)는 복수의 이벤트 인식기(예로서, 3040-1 내지 3040-R)의 인스턴스들(3047)을 포함한다.
일부 실시예들에서, 제스처 인식기(3040)의 각각의 인스턴스(3047-2)는 이벤트 인식기 상태(334)를 포함한다. 전술한 바와 같이, 일부 실시예들에서, 이벤트 인식기 상태(334)는 인식기 메타데이터 및 특성들(3043) 및 이벤트/터치 메타데이터(3045)를 포함한다. 일부 실시예들에서, 이벤트 인식기 상태(334)는 또한 제스처 인식기(3040-2)의 각각의 인스턴스(3047-2)가 어느 뷰에 부착되는지를 지시하는 뷰 계층 구조 참조(들)(336)를 포함한다.
일부 실시예들에서, 인식기 메타데이터 및 특성들(3043)은 아래의 것들 또는 이들의 서브세트 또는 수퍼세트를 포함한다.
- 배타 플래그(324);
- 배타 예외 리스트(326);
- 대기 리스트(327);
- 터치 시작 지연 플래그(328);
- 터치 종료 지연 플래그(330); 및
- 터치 취소 플래그(332).
일부 실시예들에서, 하나 이상의 이벤트 인식기들은 이벤트 인식기가 이벤트를 인식한 후까지 서브이벤트들의 시퀀스 중 하나 이상의 서브이벤트들의 전달을 지연시키도록 적응될 수 있다. 이러한 거동은 지연된 이벤트를 반영한다. 예를 들어, 다수의 탭 제스처가 가능한 뷰에서의 단일 탭 제스처를 고려한다. 그러한 경우, 탭 이벤트는 "탭 + 지연" 인식기가 된다. 본질적으로, 이벤트 인식기가 이러한 거동을 구현할 때, 이벤트 인식기는 서브이벤트들의 시퀀스가 사실상 그의 이벤트 정의에 대응하는 것이 확실할 때까지 이벤트 인식을 지연시킬 것이다. 이러한 거동은 수신 뷰가 취소된 이벤트들에 적절히 응답할 수 없을 때 적합할 것이다. 일부 실시예들에서, 이벤트 인식기는 이벤트 인식기가 서브이벤트들의 시퀀스가 그의 이벤트 정의에 대응하지 않는 것을 확신할 때까지 그의 각각의 활성적으로 관련된 뷰로의 그의 이벤트 인식 상태의 갱신을 지연시킬 것이다. 터치 시작 지연 플래그(328), 터치 종료 지연 플래그(330) 및 터치 취소 플래그(332)는 서브이벤트 전달 기술들은 물론, 이벤트 인식기 및 뷰 상태 정보 갱신들을 특정 요구들에 대해 맞춤화하기 위해 제공된다.
일부 실시예들에서, 인식기 메타데이터 및 특성들(3043)은 아래의 것들 또는 이들의 서브세트 또는 수퍼세트를 포함한다.
- 각각의 이벤트 인식기 인스턴스(예로서, 3047-2)에 대한 상태 기계(예로서, 340)의 상태를 지시하는 상태 기계 상태/페이즈(3038); 상태 기계 상태/페이즈(3038)는 후술하는 바와 같이 "이벤트 가능", "이벤트 인식", "이벤트 실패" 등과 같은 다양한 상태 값들을 가질 수 있고; 대안으로서 또는 추가로, 상태 기계 상태/페이즈(3038)는 터치 데이터 구조가 이전의 터치 데이터 구조들에 의해 참조되지 않은 새로운 터치를 정의한다는 것을 지시할 수 있는 "터치 페이즈 시작"과 같은 다양한 페이즈 값들을 가질 수 있고; "터치 페이즈 이동" 값은 정의되는 터치가 이전 위치로부터 이동되었다는 것을 지시할 수 있고; "터치 페이즈 정지" 값은 터치가 동일 위치에 머물러 있다는 것을 지시할 수 있고; "터치 페이즈 종료" 값은 터치가 종료되었다는 것을(예를 들어, 사용자가 다중 터치 디스플레이의 표면으로부터 그의 손가락을 리프트 오프하였다는 것을) 지시할 수 있고; "터치 페이즈 취소" 값은 터치가 장치에 의해 취소되었다는 것을 지시할 수 있고; 취소된 터치는 사용자에 의해 반드시 종료되지는 않았지만 장치가 무시하기로 결정한 터치일 수 있고; 예를 들어, 장치는 터치가 부주의로(즉, 주머니에 휴대용 다중 터치 인에이블드 장치를 넣은 결과로서) 생성된 것으로 결정하고, 그러한 이유로 터치를 무시할 수 있고; 상태 기계 상태/페이즈(3038)의 각각의 값은 정수(본 명세서에서 "제스처 인식기 상태 값"이라고 함)일 수 있음;
- 액션-타겟 쌍(들)(3051), 각각의 쌍은 이벤트 또는 터치를 제스처 또는 제스처의 일부로서 인식하는 것에 응답하여 각각의 이벤트 인식기 인스턴스가 식별된 액션 메시지를 전송하는 타겟을 식별함;
- 대리자(3053), 이것은 대리자가 각각의 이벤트 인식기 인스턴스에 할당될 때 대응하는 대리자에 대한 참조이고; 대리자가 각각의 이벤트 인식기 인스턴스에 할당되지 않을 때, 대리자(346)는 공백 값을 포함함; 및
- 각각의 이벤트 인식기 인스턴스가 인에이블되는지를 지시하는 인에이블드 특성(3055); 일부 실시예들에서, 각각의 이벤트 인식기 인스턴스가 인에이블되지 않을 때(예를 들어, 디스에이블될 때), 각각의 이벤트 인식기 인스턴스는 이벤트들 또는 터치들을 처리하지 않는다.
일부 실시예들에서, 예외 리스트(326)는 비배타 이벤트 인식기들에 의해서도 사용될 수 있다. 특히, 비배타 이벤트 인식기가 이벤트 또는 서브이벤트를 인식할 때, 이벤트 또는 서브이벤트를 인식한 이벤트 인식기의 예외 리스트(326) 내에 목록화된 배타 이벤트 인식기들은 제외하고, 현재 활성인 뷰들과 관련된 배타 이벤트 인식기들로는 후속 이벤트들 및/또는 서브이벤트들이 전달되지 않는다.
일부 실시예들에서, 이벤트 인식기들은 원하지 않는 이벤트들 및/또는 서브이벤트들이 히트 뷰로 전달되는 것을 방지하기 위해 터치 종료 지연 플래그(330)와 함께 터치 취소 플래그(332)를 사용하도록 구성될 수 있다. 예를 들어, 단일 탭 제스처의 정의와 더블 탭 제스처의 제1 절반은 동일하다. 단일 탭 이벤트 인식기가 단일 탭을 성공적으로 인식하면, 원하지 않는 액션이 발생할 수 있다. 터치 종료 지연 플래그가 설정되는 경우, 단일 탭 이벤트 인식기는 단일 탭 이벤트가 인식될 때까지 서브이벤트들을 히트 뷰로 전송하지 못한다. 게다가, 단일 탭 이벤트 인식기의 대기 리스트는 더블 탭 이벤트 인식기를 식별할 수 있으며, 따라서 더블 탭 이벤트 인식기가 이벤트 불가능 상태에 들어갈 때까지 단일 탭 이벤트 인식기가 단일 탭을 인식하는 것을 방지할 수 있다. 대기 리스트의 사용은 더블 탭 제스처가 수행될 때 단일 탭과 관련된 액션들의 실행을 방지한다. 대신에, 더블 탭 이벤트의 인식에 응답하여, 더블 탭과 관련된 액션들만이 실행될 것이다.
특히, 전술한 바와 같은 터치 감지 표면들 상의 사용자 터치들의 형태들을 참조하면, 터치들 및 사용자 제스처들은 순간적일 필요가 없는 행위를 포함할 수 있으며, 예를 들어 터치는 일정 기간 동안 디스플레이에 대해 손가락을 이동시키거나 유지하는 행위를 포함할 수 있다. 그러나, 터치 데이터 구조는 특정 시간에 터치의 상태(또는 더 일반적으로 임의의 입력 소스의 상태)를 정의한다. 따라서, 터치 데이터 구조에 저장된 값들은 단일 터치의 과정 동안에 변경되어, 상이한 시점들에서의 단일 터치의 상태가 애플리케이션으로 전달되게 할 수 있다.
각각의 터치 데이터 구조는 다양한 엔트리들을 포함할 수 있다. 일부 실시예들에서, 터치 데이터 구조들은 아래의 것들 또는 이들의 서브세트 또는 수퍼세트와 같은 이벤트/터치 메타데이터(3045) 내의 적어도 터치 고유 엔트리들에 대응하는 데이터를 포함할 수 있다.
- "뷰에 대한 제1 터치" 엔트리(345);
- 터치 데이터 구조와 관련된 특정 시간(예를 들어, 터치 시간)을 지시하는 "타임 스탬프" 정보를 포함하는 "터치별 정보" 엔트리(3051)"; 옵션으로서 "터치별 정보" 엔트리(3051)는 대응하는 터치의 위치와 같은 다른 정보를 포함함; 및
- 옵션인 "탭 카운트" 엔트리(348).
따라서, 각각의 터치 데이터 구조는 특정 시간에(예를 들어, 터치가 정지해 있는지, 이동하고 있는지 등) 각각의 터치(또는 다른 입력 소스)와 관련하여 무엇이 발생하고 있는지는 물론, 터치와 관련된 다른 정보(위치 등)도 정의할 수 있다. 따라서, 각각의 터치 데이터 구조는 특정 순간에 특정 터치의 상태를 정의할 수 있다. 동일 시간을 참조하는 하나 이상의 터치 데이터 구조는 특정 뷰가 어느 순간에 수신하고 있는 모든 터치들의 상태들을 정의할 수 있는 터치 이벤트 데이터 구조 내에 추가될 수 있다(전술한 바와 같이, 일부 터치 데이터 구조들은 종료되어 더 이상 수신되지 않는 터치들도 참조할 수 있다). 뷰에서 발생하는 터치들을 설명하는 연속 정보를 소프트웨어에 제공하기 위해 시간이 지남에 따라 뷰를 구현하는 소프트웨어로 다수의 터치 이벤트 데이터 구조가 전송될 수 있다.
옵션으로서 다중 터치 제스처들을 포함하는 복잡한 터치 기반 제스처들을 처리하는 능력은 다양한 소프트웨어 애플리케이션들에 복잡성을 추가할 수 있다. 일부 예들에서, 그러한 추가적인 복잡성은 향상되고 바람직한 인터페이스 특징들을 구현하는 데 필요할 수 있다. 예를 들어, 게임은 상이한 뷰들에서 발생하는 다수의 동시 터치를 처리하는 능력을 필요로 할 수 있는데, 이는 게임들이 종종 다수의 버튼의 동시 누름, 또는 가속도계 데이터와 터치 감지 표면 상의 터치들의 결합을 필요로 하기 때문이다. 그러나, 일부 더 간단한 애플리케이션들 및/또는 뷰들은 향상된 인터페이스 특징들을 필요로 하지 않는다. 예를 들어, 간단한 소프트 버튼(즉, 터치 감지 디스플레이 상에 표시되는 버튼)은 다중 터치 기능이 아니라 단일 터치들을 이용하여 만족스럽게 동작할 수 있다. 이러한 경우, 기반 OS는 단일 터치들(예를 들어, 소프트 버튼 상의 단일 터치 또는 탭)만으로 동작할 수 있도록 의도된 뷰와 관련된 소프트웨어 컴포넌트로 불필요하거나 과다한 터치 데이터(예로서, 다중 터치 데이터)를 전송할 수 있다. 소프트웨어 컴포넌트는 이러한 데이터를 처리하는 것이 필요할 수 있으므로, 단일 터치만이 관련된 뷰와 관련되는 경우에도 다수의 터치를 처리하는 소프트웨어 애플리케이션의 모든 복잡성을 특징으로 하는 것이 필요할 수 있다. 이것은 장치에 대한 소프트웨어의 개발 비용을 증가시킬 수 있는데, 이는 전통적으로 마우스 인터페이스 환경(즉, 다양한 버튼 등)에서 프로그래밍하기 쉬웠던 소프트웨어 컴포넌트들이 다중 터치 환경에서 훨씬 더 복잡할 수 있기 때문이다.
일부 실시예들에 따르면, 복잡한 터치 기반 제스처들의 인식에 있어서의 복잡성을 줄이기 위해, 대리자들을 이용하여, 이벤트 인식기들의 거동을 제어할 수 있다. 후술하는 바와 같이, 대리자들은 예를 들어 대응하는 이벤트 인식기(또는 제스처 인식기)가 이벤트(예로서, 터치) 정보를 수신할 수 있는지; 대응하는 이벤트 인식기(또는 제스처 인식기)가 상태 기계의 초기 상태(예로서, 이벤트 가능 상태)로부터 다른 상태로 전이할 수 있는지; 그리고/또는 대응하는 이벤트 인식기(또는 제스처 인식기)가 다른 이벤트 인식기(들)(또는 제스처 인식기(들))의 이벤트 인식을 차단하거나 이벤트를 인식하는 다른 이벤트 인식기(들)(또는 제스처 인식기(들))에 의해 차단되지 않고 이벤트(예로서, 터치)를 대응하는 제스처로서 동시에 인식할 수 있는지를 결정할 수 있다.
그러나, 터치 감지 표면들 상에서의 사용자 터치들의 평가 및 처리의 복잡성에 관한 위의 설명은 입력 장치들(128)을 갖는 전자 장치(102)를 조작하기 위한 모든 형태의 사용자 입력들 - 이들 모두가 터치 스크린 상에서 개시되지는 않음 -, 예를 들어 인식될 이벤트를 정의하는 이벤트들 및/또는 서브이벤트들에 대응하는 입력들로서 사용될 수 있는 단일 또는 다수의 키보드 누름 또는 유지가 있거나 없는 마우스 움직임 및 마우스 버튼 누름의 조정, 장치 회전 또는 다른 움직임, 터치 패드 상에서의 탭, 드래그, 스크롤 등과 같은 사용자 움직임, 펜 스타일러스 입력, 구두 명령, 눈 움직임 검출, 바이오메트릭 입력, 사용자의 생리적 변화의 검출 및/또는 이들의 임의 조합에도 적용된다는 것을 이해해야 한다.
이벤트 정보의 흐름을 참조하면, 도 3f는 일부 실시예들에 따른 이벤트 정보의 흐름을 나타내는 블록도이다. (예를 들어, 운영 체제(118) 또는 애플리케이션 소프트웨어(124) 내의) 이벤트 디스패처 모듈(315)은 이벤트 정보를 수신하고, 이벤트 정보를 하나 이상의 애플리케이션들(예로서, 133-1, 133-2)로 전송한다. 일부 실시예들에서, 애플리케이션(133-1)은 뷰 계층 구조(506) 내의 복수의 뷰(예로서, 도 3d의 뷰들(317)에 대응하는 508, 510 및 512) 및 복수의 뷰 내의 복수의 제스처 인식기(516-1 내지 516-3)를 포함한다. 애플리케이션(133-1)은 또한 타겟-액션 쌍들(예로서, 552-1, 552-2)의 타겟 값들에 대응하는 하나 이상의 제스처 핸들러들(550)을 포함한다. 일부 실시예들에서, 이벤트 디스패처 모듈(315)은 히트 뷰 결정 모듈(314)로부터 히트 뷰 정보를 수신하고, 이벤트 정보를 히트 뷰(예로서, 512) 또는 히트 뷰에 부착된 이벤트 인식기(들)(예로서, 516-1, 516-2)로 전송한다. 추가로 또는 대안으로서, 이벤트 디스패처 모듈(315)은 히트 레벨 결정 모듈(352)로부터 히트 레벨 정보를 수신하고, 이벤트 정보를 히트 레벨 내의 애플리케이션들(예로서, 133-1, 133-2) 또는 히트 레벨 애플리케이션들 내의 하나 이상의 이벤트 인식기들(예로서, 516-4)로 전송한다. 일부 실시예들에서, 이벤트 정보를 수신하는 애플리케이션들 중 하나는 디폴트 애플리케이션이다(예를 들어, 133-2는 디폴트 애플리케이션일 수 있다). 일부 실시예들에서, 각각의 수신 애플리케이션 내의 제스처 인식기들의 서브세트만이 이벤트 정보를 수신하는 것이 허락된다(또는 수신하도록 구성된다). 예를 들어, 애플리케이션(133-1) 내의 제스처 인식기(516-3)는 이벤트 정보를 수신하지 못한다. 이벤트 정보를 수신하는 제스처 인식기들은 본 명세서에서 수신 제스처 인식기들이라고 한다. 도 3f에서, 수신 제스처 인식기들(516-1, 516-2, 516-4)은 이벤트 정보를 수신하고, 수신된 이벤트 정보를 수신 제스처 인식기들 내의 각각의 제스처 정의(3037)(도 3d)와 비교한다. 도 3f에서, 제스처 인식기들(516-1, 516-4)은 수신된 이벤트 정보와 매칭되는 각각의 제스처 정의를 가지며, 각각의 액션 메시지들(예로서, 518-1, 518-2)을 대응하는 제스처 핸들러들(예로서, 552-1, 552-3)로 전송한다.
도 4a는 4개의 상태를 포함하는 이벤트 인식기 상태 기계(400)를 나타낸다. 수신된 서브이벤트들에 기초하여 이벤트 인식기 상태 기계(400)에서의 상태 전이들을 관리함으로써, 이벤트 인식기는 이벤트 정의를 효과적으로 표현한다. 예를 들어, 2개 또는 옵션으로서 3개 서브이벤트의 시퀀스에 의해 탭 제스처가 효과적으로 정의될 수 있다. 첫째, 터치가 검출되어야 하며, 이것은 서브이벤트 1일 것이다. 예를 들어, 터치 서브이벤트는 사용자의 손가락이 상태 기계(400)를 갖는 이벤트 인식기를 포함하는 뷰 내의 터치 감지 표면을 터치하는 것일 수 있다. 둘째, 옵션인 측정된 지연 - 터치가 어떠한 주어진 방향으로도 실질적으로 움직이지 않고(예를 들어, 터치 위치의 임의의 이동이 디스플레이 상의 거리(예로서, 5 mm)로서 또는 픽셀들의 수(예로서, 5개 픽셀)로서 측정될 수 있는 사전 정의된 임계치보다 작고), 지연은 충분히 짧음 -은 서브이벤트 2로서 사용될 것이다. 마지막으로, 터치의 종료(예로서, 터치 감지 표면으로부터의 사용자의 손가락의 리프트 오프)가 서브이벤트 3으로 사용될 것이다. 이러한 서브이벤트들의 수신에 기초하여 상태들 사이에서 전이하도록 이벤트 인식기 상태 기계(400)를 코딩함으로써, 이벤트 인식기 상태 기계(400)는 탭 제스처 이벤트 정의를 효과적으로 표현한다. 그러나, 도 4a에 도시된 상태들은 예시적인 상태들이며, 이벤트 인식기 상태 기계(400)는 더 많거나 적은 상태를 포함할 수 있고 그리고/또는 이벤트 인식기 상태 기계(400) 내의 각각의 상태는 도시된 상태들 또는 임의의 다른 상태들 중 하나에 대응할 수 있다는 점에 유의해야 한다.
일부 실시예들에서, 이벤트 타입에 관계없이, 이벤트 인식기 상태 기계(400)는 이벤트 인식 시작 상태(405)에서 시작하고, 어떤 서브이벤트가 수신되는지에 따라 나머지 상태들 중 임의의 상태로 진행할 수 있다. 이벤트 인식기 상태 기계(400)의 설명을 용이하게 하기 위해, 이벤트 인식 시작 상태(405)로부터 이벤트 인식 상태(415), 이벤트 가능 상태(410) 및 이벤트 불가능 상태(420)로의 직접 경로들이 설명된 후에 이벤트 가능 상태(410)로부터 이어지는 경로들이 설명될 것이다.
이벤트 인식 시작 상태(405)로부터 시작하여, 이벤트에 대한 이벤트 정의만을 포함하는 서브이벤트가 수신되는 경우, 이벤트 인식기 상태 기계(400)는 이벤트 인식 상태(415)로 전이할 것이다.
이벤트 인식 시작 상태(405)로부터 시작하여, 이벤트 정의 내의 제1 서브이벤트가 아닌 서브이벤트가 수신되는 경우, 이벤트 인식기 상태 기계(400)는 이벤트 불가능 상태(420)로 전이할 것이다.
이벤트 인식 시작 상태(405)로부터 시작하여, 주어진 이벤트 정의 내의 제1 서브이벤트이면서 최종 서브이벤트는 아닌 서브이벤트가 수신되는 경우, 이벤트 인식기 상태 기계(400)는 이벤트 가능 상태(410)로 전이할 것이다. 수신된 다음 서브이벤트가 주어진 이벤트 정의 내의 제2 서브이벤트이지만 최종 서브이벤트가 아닌 경우, 이벤트 인식기 상태 기계(400)는 이벤트 가능 상태(410)로 유지될 것이다. 이벤트 인식기 상태 기계(400)는 수신되는 서브이벤트들의 시퀀스가 계속 이벤트 정의의 일부인 동안은 이벤트 가능 상태(410)로 유지될 수 있다. 임의의 시간에 이벤트 인식기 상태 기계(400)가 이벤트 가능 상태(410)에 있고, 이벤트 인식기 상태 기계(400)가 이벤트 정의의 일부가 아닌 서브이벤트를 수신하는 경우, 이벤트 인식기 상태 기계는 이벤트 불가능 상태(420)로 전이할 것이며, 따라서 (존재할 경우) 현재 이벤트가 이 이벤트 인식기(즉, 상태(400)에 대응하는 이벤트 인식기)에 대응하는 이벤트의 타입이 아닌 것으로 결정할 것이다. 한편, 이벤트 인식기 상태 기계(400)가 이벤트 가능 상태(410)에 있고, 이벤트 인식기 상태 기계(400)가 이벤트 정의 내의 최종 서브이벤트를 수신하는 경우, 이벤트 인식기 상태 기계는 이벤트 인식 상태(415)로 전이하여, 성공적인 이벤트 인식을 완료할 것이다.
도 4b는 뷰들이 각각의 입력에 대한 정보를 어떻게 수신하는지를 나타내는 유한 상태 기계를 갖는 입력 소스 처리 프로세스(440)의 일 실시예를 나타낸다. 장치의 터치 감지 표면 상에서 다수의 터치가 존재할 때, 터치들 각각은 그 자신의 유한 상태 기계를 갖는 개별 입력 소스라는 점에 유의한다. 이 실시예에서, 입력 소스 처리 프로세스(440)는 4개의 상태, 즉 입력 시퀀스 시작 상태(445), 입력 시퀀스 계속 상태(450), 입력 시퀀스 종료 상태(455) 및 입력 시퀀스 취소 상태(460)를 포함한다. 입력 소스 처리 프로세스(440)는 예를 들어 입력이 애플리케이션으로 전달될 때, 그러나 입력 시퀀스의 완료가 검출된 후에만 각각의 이벤트 인식기에 의해 사용될 수 있다. 입력 소스 처리 프로세스(440)는 애플리케이션으로 전달된 입력 시퀀스에 응답하여 이루어진 변경들을 무효화 또는 취소할 수 없는 애플리케이션과 함께 사용될 수 있다. 도 4b에 도시된 상태들은 예시적인 상태들이며, 입력 소스 처리 프로세스(440)는 더 많거나 적은 상태를 포함할 수 있고, 그리고/또는 입력 소스 처리 프로세스(440) 내의 각각의 상태는 도시된 상태들 또는 임의의 다른 상태들 중 하나에 대응할 수 있다.
입력 시퀀스 시작 상태(445)로부터 시작하여, 입력 시퀀스를 단독으로 완료하는 입력이 수신되는 경우, 입력 소스 처리 프로세스(440)는 입력 시퀀스 종료 상태(455)로 전이할 것이다.
입력 시퀀스 시작 상태(445)로부터 시작하여, 입력 시퀀스 종료를 지시하는 입력이 수신되는 경우, 입력 소스 처리 프로세스(440)는 입력 시퀀스 취소 상태(460)로 전이할 것이다.
입력 시퀀스 시작 상태(445)로부터 시작하여, 입력 시퀀스 내의 제1 입력이고 최종 입력은 아닌 입력이 수신되는 경우, 입력 소스 처리 프로세스(440)는 입력 시퀀스 계속 상태(450)로 전이할 것이다. 수신되는 다음 입력이 입력 시퀀스 내의 제2 입력인 경우, 입력 소스 처리 프로세스(440)는 입력 시퀀스 계속 상태(450)로 유지될 것이다. 입력 소스 처리 프로세스(440)는 전달되는 서브이벤트들의 시퀀스가 계속 주어진 입력 시퀀스의 일부인 동안은 입력 시퀀스 계속 상태(450)로 유지될 수 있다. 임의의 시간에 입력 소스 처리 프로세스(440)가 입력 시퀀스 계속 상태(450)에 있고, 입력 소스 처리 프로세스(440)가 입력 시퀀스의 일부가 아닌 입력을 수신하는 경우, 입력 소스 처리 프로세스는 입력 시퀀스 취소 상태(460)로 전이할 것이다. 한편, 입력 소스 처리 프로세스(440)가 입력 시퀀스 계속 상태(450)에 있고, 입력 소스 처리 프로세스(440)가 주어진 입력 정의 내의 최종 입력을 수신하는 경우, 입력 소스 처리 프로세스는 입력 시퀀스 종료 상태(455)로 전이하여, 서브이벤트들의 그룹을 성공적으로 수신할 것이다.
일부 실시예들에서, 입력 소스 처리 프로세스(440)는 특정 뷰들 또는 프로그램 레벨들에 대해 구현될 수 있다. 그 경우, 서브이벤트들의 소정 시퀀스들은 입력 취소 상태(460)로의 전이를 유발할 수 있다.
일례로서, 단지 활성적으로 관련된 뷰 입력 소스 핸들러(480)(이하, "뷰(480)")에 의해 표현되는 활성적으로 관련된 뷰를 상정하는 도 4c를 고려한다. 뷰(480)는 단지 그의 이벤트 인식기들 중 하나로서의 수직 스와이프 이벤트 인식기(468)(이하, "인식기(468)")에 의해 표현되는 수직 스와이프 이벤트 인식기를 포함한다. 이 경우, 인식기(468)는 그의 정의의 일부로서 1) 손가락 다운(465-1); 2) 옵션인 짧은 지연(465-2); 3) 적어도 N개의 픽셀의 수직 스와이핑(465-3); 및 4) 손가락 리프트 오프(465-4)의 검출을 필요로 할 수 있다.
이 예에서, 인식기(468)는 또한 그의 터치 시작 지연 플래그(328) 및 터치 취소 플래그(332) 세트를 갖는다. 이제, 서브이벤트들의 후속 시퀀스의 인식기(468)는 물론, 뷰(480)로의 전달을 고려한다.
- 서브이벤트 시퀀스(465-1): 인식기(468)의 이벤트 정의에 대응하는 손가락 다운을 검출한다.
- 서브이벤트 시퀀스(465-2): 인식기(468)의 이벤트 정의에 대응하는 지연을 측정한다.
- 서브이벤트 시퀀스(465-3): 손가락은 수직 스크롤링과 호환되는 수직 스와이핑 이동을 수행하지만 N개의 픽셀보다 작으며, 따라서 인식기(468)의 이벤트 정의에 대응하지 않는다.
- 서브이벤트 시퀀스(465-4): 인식기(468)의 이벤트 정의에 대응하는 손가락 리프트 오프를 검출한다.
여기서, 인식기(468)는 서브이벤트 1 및 2를 그의 이벤트 정의의 일부로서 성공적으로 인식할 것이며, 따라서 서브이벤트 3의 전달 직전에 이벤트 가능 상태(472)에 있을 것이다. 인식기(468)는 그의 터치 시작 지연 플래그(328) 세트를 가지므로, 초기 터치 서브이벤트는 히트 뷰로 전송되지 않는다. 따라서, 뷰(480)의 입력 소스 처리 프로세스(440)는 서브이벤트 3의 전달 직전에 여전히 입력 시퀀스 시작 상태에 있을 것이다.
인식기(468)로의 서브이벤트 3의 전달이 완료되면, 인식기(468)의 상태는 이벤트 불가능 상태(476)로 전이하며, 중요한 것은, 이제 인식기(468)는 서브이벤트들의 시퀀스가 그의 특정 수직 스와이프 제스처 이벤트 타입에 대응하지 않는 것으로 결정하였다는 것이다(즉, 이벤트가 수직 스와이프가 아닌 것으로 결정하였다. 즉, 이 예에서는 수직 스와이프로서의 인식(474)이 발생하지 않는다). 뷰 입력 소스 핸들러(480)에 대한 입력 소스 처리 시스템(440)은 또한 그의 상태를 갱신할 것이다. 일부 실시예들에서, 뷰 입력 소스 핸들러(480)의 상태는 이벤트 인식기가 그가 이벤트의 인식을 시작했음을 지시하는 상태 정보를 전송할 때 입력 시퀀스 시작 상태(482)로부터 입력 시퀀스 계속 상태(484)로 진행할 것이다. 뷰 입력 소스 핸들러(480)는 이벤트 인식기의 터치 취소 플래그(322)가 설정되었으므로 이벤트의 인식 없이 터치 또는 입력이 종료할 때 입력 시퀀스 취소 상태(488)로 진행한다. 대안으로서, 이벤트 인식기의 터치 취소 플래그(322)가 설정되지 않은 경우, 뷰 입력 소스 핸들러(480)는 터치 또는 입력이 종료할 때 입력 시퀀스 종료 상태(486)로 진행한다.
이벤트 인식기(468)의 터치 취소 플래그(332)가 설정되므로, 이벤트 인식기(468)가 이벤트 불가능 상태(476)로 전이할 때, 인식기는 터치 취소 서브이벤트 또는 메시지를 이벤트 인식기에 대응하는 히트 뷰로 전송할 것이다. 결과적으로, 뷰 입력 소스 핸들러(480)는 입력 시퀀스 취소 상태(488)로 전이할 것이다.
일부 실시예들에서, 존재할 경우, 뷰 입력 소스 핸들러(480)의 다른 이벤트 인식기들이 서브이벤트들의 시퀀스를 계속 분석할 수 있지만, 서브이벤트(465-4)의 전달은 인식기(468)에 의해 행해지는 어떠한 이벤트 인식 결정과도 무관하다.
아래의 표는 뷰 입력 소스 핸들러(480)의 상태와 함께 전술한 이벤트 인식기(468)의 상태와 관련된 바와 같은 이러한 예시적인 서브이벤트 시퀀스(465)의 처리를 요약된 표 포맷으로 나타낸다. 이 예에서, 뷰 입력 소스 핸들러(480)의 상태는 인식기(468)의 터치 취소 플래그(332)가 설정되었으므로 입력 시퀀스 시작 상태(445)로부터 입력 시퀀스 취소 상태(488)로 진행한다.
서브이벤트 시퀀스(465) 상태: 인식기(468) 상태: 뷰(480)
전달 시작 전 이벤트 인식 시작(470)
손가락 다운(465-1) 이벤트 가능(472) 입력 시퀀스 시작(482)
검출
지연(465-2) 측정 이벤트 가능(472) 입력 시퀀스 계속(484)
손가락 수직 이벤트 불가능(476) 입력 시퀀스 계속(484)
스와이프(465-3) 검출
손가락 리프트 오프 이벤트 불가능(476) 입력 시퀀스 취소(488)
(465-4) 검출
도 5a를 참조하여, 복수의 이벤트 인식기를 포함하는 뷰에 의해 수신되고 있는 서브이벤트 시퀀스(520)의 일례에 주목한다. 이 예에서, 도 5a에는 2개의 이벤트 인식기, 즉 스크롤링 이벤트 인식기(580) 및 탭 이벤트 인식기(590)가 도시되어 있다. 설명의 목적을 위해, 도 3a의 뷰 검색 결과 패널(304)은 서브이벤트 시퀀스(520)의 수신, 및 스크롤링 이벤트 인식기(580) 및 탭 이벤트 인식기(590)에서의 상태 전이들과 관련될 것이다. 이 예에서 서브이벤트들의 시퀀스(520)는 터치 감지 디스플레이 또는 트랙 패드 상에서의 탭 손가락 제스처를 정의하지만, 동일한 이벤트 인식 기술은 다양한 상황들, 예를 들어 마우스 버튼 누름의 검출에서 그리고/또는 프로그램 레벨들의 프로그램 계층 구조들을 이용하는 실시예들에서 적용될 수 있다는 점에 유의한다.
제1 서브이벤트가 뷰 검색 결과 패널(304)로 전달되기 전에, 이벤트 인식기들(580, 590)은 각각 이벤트 인식 시작 상태들(582, 592)에 있다. 손가락 다운 검출 서브이벤트(521-1)로서 뷰 검색 결과 패널(304)에 대한 활성적으로 관련된 이벤트 인식기들에 대해 터치 서브이벤트(301-2)로서(또한 맵 뷰(305)에 대한 활성적으로 관련된 이벤트 인식기들에 대해 터치 서브이벤트(301-3)로서) 전달되는 터치(301)에 이어서, 스크롤링 이벤트 인식기(580)는 이벤트 가능 상태(584)로 전이하고, 유사하게 탭 이벤트 인식기(590)는 이벤트 가능 상태(594)로 전이한다. 이것은 탭 및 스크롤 양자의 이벤트 정의가 터치 감지 표면 상에서의 손가락 다운 검출과 같은 터치로부터 시작되기 때문이다.
탭 및 스크롤 제스처들의 일부 정의들은 옵션으로서 이벤트 정의에서 최초 터치와 임의의 다음 단계 사이에 지연을 포함할 수 있다. 본 명세서에서 설명되는 모든 예들에서, 탭 및 스크롤 제스처들 양자에 대한 예시적인 이벤트 정의들은 제1 터치 서브이벤트(손가락 다운 검출)에 이어지는 지연 서브이벤트를 인식한다.
따라서, 지연 측정 서브이벤트(521-2)가 이벤트 인식기들(580, 590)로 전달될 때, 이들 양자는 각각 이벤트 가능 상태들(584, 594)로 유지된다.
마지막으로, 손가락 리프트 오프 검출 서브이벤트(521-3)가 이벤트 인식기들(580, 590)로 전달된다. 이 경우, 이벤트 인식기들(580, 590)에 대한 상태 전이들은 상이한데, 그 이유는 탭 및 스크롤에 대한 이벤트 정의들이 상이하기 때문이다. 스크롤링 이벤트 인식기(580)의 경우, 이벤트 가능 상태로 유지하기 위한 다음 서브이벤트는 이동을 검출하는 것일 것이다. 그러나, 전달되는 서브이벤트는 손가락 리프트 오프 검출(521-3)이므로, 스크롤링 이벤트 인식기(580)는 이벤트 불가능 상태(588)로 전이한다. 그러나, 탭 이벤트 정의는 손가락 리프트 오프 서브이벤트와 함께 종료된다. 따라서, 탭 이벤트 인식기(590)는 손가락 리프트 오프 검출 서브이벤트(521-3)가 전달된 후에 이벤트 인식 상태(596)로 전이한다.
일부 실시예들에서, 도 4b 및 4c와 관련하여 전술한 바와 같이, 도 4b에서 설명된 입력 소스 처리 프로세스(440)는 뷰 레벨에서 다양한 목적을 위해 사용될 수 있다. 아래의 표는 이벤트 인식기들(580, 590) 및 입력 소스 처리 프로세스(440)와 관련된 바와 같은 서브이벤트 시퀀스(520)의 전달을 요약된 표 포맷으로 나타낸다.
서브이벤트 시퀀스(520) 상태: 스크롤링 이벤트 인식기(580) 상태: 탭 이벤트 인식기(590) 상태: 입력 소스 처리 프로세스(440)
전달 시작 전 이벤트 인식 시작(582) 이벤트 인식 시작(592)
손가락 다운 검출(521-1) 이벤트 가능(584) 이벤트 가능(594) 입력 시퀀스 시작(445)
지연 측정(521-2) 이벤트 가능(584) 이벤트 가능(594) 입력 시퀀스 계속(450)
손가락 리프트 오프 검출(521-3) 이벤트 불가능(588) 이벤트 인식(596) 입력 시퀀스 종료(455)
도 5b를 참조하여, 복수의 이벤트 인식기를 포함하는 뷰에 의해 수신되고 있는 서브이벤트 시퀀스(530)의 다른 예에 주목한다. 이 예에서, 도 5b에는 2개의 이벤트 인식기, 즉 스크롤링 이벤트 인식기(580) 및 탭 이벤트 인식기(590)가 도시되어 있다. 설명의 목적을 위해, 도 3a의 뷰 검색 결과 패널(304)은 서브이벤트 시퀀스(530)의 수신, 및 스크롤링 이벤트 인식기(580) 및 탭 이벤트 인식기(590)에서의 상태 전이들과 관련될 것이다. 이 예에서 서브이벤트들(530)의 시퀀스는 터치 감지 디스플레이 상에서의 스크롤 손가락 제스처를 정의하지만, 동일한 이벤트 인식 기술은 다양한 상황들에, 예를 들어 마우스 버튼 누름의 검출, 마우스 이동 및 마우스 버튼 해제에 그리고/또는 프로그램 레벨들의 프로그램 계층 구조들을 이용하는 실시예들에 적용될 수 있다는 점에 유의한다.
제1 서브이벤트가 뷰 검색 결과 패널(304)에 대한 활성적으로 관련된 이벤트 인식기들로 전달되기 전에, 이벤트 인식기들(580, 590)은 각각 이벤트 인식 시작 상태들(582, 592)에 있다. (전술한 바와 같은) 터치(301)에 대응하는 서브이벤트들의 전달에 이어서, 스크롤링 이벤트 인식기(580)는 이벤트 가능 상태(584)로 전이하며, 유사하게 탭 이벤트 인식기(590)는 이벤트 가능 상태(594)로 전이한다.
지연 측정 서브이벤트(531-2)가 이벤트 인식기들(580, 590)로 전달됨에 따라, 이들 양자는 각각 이벤트 가능 상태들(584, 594)로 전이한다.
이어서, 손가락 이동 검출 서브이벤트(531-3)가 이벤트 인식기들(580, 590)로 전달된다. 이 경우, 이벤트 인식기들(580, 590)에 대한 상태 전이들은 상이한데, 이는 탭 및 스크롤에 대한 이벤트 정의들이 상이하기 때문이다. 스크롤링 이벤트 인식기(580)의 경우, 이벤트 가능 상태로 유지하기 위한 다음 서브이벤트는 이동을 검출하는 것이며, 따라서 스크롤링 이벤트 인식기(580)는 그가 손가락 이동 검출 서브이벤트(531-3)를 수신할 때 이벤트 가능 상태(584)로 유지된다. 그러나, 전술한 바와 같이, 탭에 대한 정의는 손가락 리프트 오프 서브이벤트와 함께 종료되며, 따라서 탭 이벤트 인식기(590)는 이벤트 불가능 상태(598)로 전이한다.
마지막으로, 손가락 리프트 오프 검출 서브이벤트(531-4)가 이벤트 인식기들(580, 590)로 전달된다. 탭 이벤트 인식기는 이미 이벤트 불가능 상태(598)에 있으며, 상태 전이는 발생하지 않는다. 스크롤링 이벤트 인식기(580)의 이벤트 정의는 손가락 리프트 오프 검출과 함께 종료된다. 전달되는 서브이벤트가 손가락 리프트 오프 검출(531-4)이므로, 스크롤링 이벤트 인식기(580)는 이벤트 인식 상태(586)로 전이한다. 터치 감지 표면 상에서의 손가락 이동이 다수의 이동 서브이벤트를 생성할 수 있으며, 따라서 스크롤이 리프트 오프 전에 인식되고 리프트 오프될 때까지 계속될 수 있다.
아래의 표는 이벤트 인식기들(580, 590) 및 입력 소스 처리 프로세스(440)와 관련된 바와 같은 서브이벤트 시퀀스(530)의 전달을 요약된 표 포맷으로 나타낸다.
서브이벤트 시퀀스(530) 상태: 스크롤링 이벤트 인식기(580) 상태: 탭 이벤트 인식기(590) 상태: 입력 소스 처리 프로세스(440)
전달 시작 전 이벤트 인식 시작(582) 이벤트 인식 시작(592)
손가락 다운 검출(531-1) 이벤트 가능(584) 이벤트 가능(594) 입력 시퀀스 시작(445)
지연 측정(531-2) 이벤트 가능(584) 이벤트 가능(594) 입력 시퀀스 계속(450)
손가락 이동 검출(531-3) 이벤트 가능(584) 이벤트 불가능(598) 입력 시퀀스 계속(450)
손가락 리프트 오프 검출(531-4) 이벤트 인식(586) 이벤트 불가능(598) 입력 시퀀스 종료(455)
도 5c를 참조하여, 복수의 이벤트 인식기를 포함하는 뷰에 의해 수신되고 있는 서브이벤트 시퀀스(540)의 다른 예에 주목한다. 이 예에서, 도 5c에는 2개의 이벤트 인식기, 즉 더블 탭 이벤트 인식기(570) 및 탭 이벤트 인식기(590)가 도시되어 있다. 설명의 목적을 위해, 도 3a의 맵 뷰(305)는 서브이벤트 시퀀스(540)의 수신, 및 더블 탭 이벤트 인식기(570) 및 탭 이벤트 인식기(590)에서의 상태 전이들과 관련될 것이다. 이 예에서 서브이벤트들(540)의 시퀀스는 터치 감지 디스플레이 상에서의 더블 탭 제스처를 정의하지만, 동일한 이벤트 인식 기술은 다양한 상황들, 예를 들어 마우스 더블 클릭 검출에 그리고/또는 프로그램 레벨들의 프로그램 계층 구조들을 이용하는 실시예들에 적용될 수 있다는 점에 유의한다.
제1 서브이벤트가 맵 뷰(305)에 대한 활성적으로 관련된 이벤트 인식기들로 전달되기 전에, 이벤트 인식기들(570, 590)은 각각 이벤트 인식 시작 상태들(572, 592)에 있다. (전술한 바와 같은) 맵 뷰(304)로의 터치 서브이벤트(301)와 관련된 서브이벤트들의 전달에 이어서, 더블 탭 이벤트 인식기(570) 및 탭 이벤트 인식기(590)는 각각 이벤트 가능 상태들(574, 594)로 전이한다. 이것은 탭 및 더블 탭의 이벤트 정의가 터치 감지 표면 상에서의 손가락 다운 검출(541-1)과 같은 터치와 함께 시작되기 때문이다.
지연 측정 서브이벤트(541-2)가 이벤트 인식기들(570, 590)로 전달될 때, 이들 양자는 각각 이벤트 가능 상태들(574, 594)로 유지된다.
이어서, 손가락 리프트 오프 검출 서브이벤트(541-3)가 이벤트 인식기들(570, 590)로 전달된다. 이 경우, 이벤트 인식기들(580, 590)에 대한 상태 전이들은 상이한데, 이는 탭 및 더블 탭에 대한 예시적인 이벤트 정의들이 상이하기 때문이다. 탭 이벤트 인식기(590)의 경우, 이벤트 정의 내의 최종 서브이벤트는 손가락 리프트 오프를 검출하는 것이며, 따라서 탭 이벤트 인식기(590)는 이벤트 인식 상태(596)로 전이한다.
그러나, 사용자가 궁극적으로 무엇을 할 수 있는지에 관계없이, 지연이 시작되었으므로, 더블 탭 인식기(570)는 이벤트 가능 상태(574)로 유지된다. 그러나, 더블 탭에 대한 완전한 이벤트 인식 정의는 다른 지연에 이어서 완전한 탭 서브이벤트 시퀀스를 필요로 한다. 이것은 이미 이벤트 인식 상태(576)에 있는 탭 이벤트 인식기(590)와 아직 이벤트 가능 상태(574)에 있는 더블 탭 인식기(570) 사이에 애매한 상황을 발생시킨다.
따라서, 일부 실시예들에서, 이벤트 인식기들은 도 3b 및 3c와 관련하여 전술한 바와 같은 배타 플래그들 및 배타 예외 리스트들을 구현할 수 있다. 여기서, 탭 이벤트 인식기(590)에 대한 배타 플래그(324)가 설정될 것이고, 게다가 탭 이벤트 인식기(590)에 대한 배타 예외 리스트(326)는 탭 이벤트 인식기(590)가 이벤트 인식 상태(596)에 들어간 후에 (더블 탭 이벤트 인식기(570)와 같은) 일부 이벤트 인식기들로의 서브이벤트들의 전달을 계속 허가하도록 구성될 것이다.
탭 이벤트 인식기(590)는 이벤트 인식 상태(596)로 유지되지만, 서브이벤트 시퀀스(540)는 더블 탭 이벤트 인식기(570)로 계속 전달되며, 지연 측정 서브이벤트(541-4), 손가락 다운 검출 서브이벤트(541-5) 및 지연 측정 서브이벤트(541-6)는 더블 탭 이벤트 인식기(570)를 이벤트 가능 상태(574)로 유지하고, 시퀀스(540)의 최종 서브이벤트, 즉 손가락 리프트 오프 검출 서브이벤트(541-7)의 전달은 더블 탭 이벤트 인식기(570)를 이벤트 인식 상태(576)로 전이시킨다.
이 시점에서, 맵 뷰(305)는 탭 이벤트 인식기(590)에 의해 인식되는 단일 탭 이벤트가 아니라 이벤트 인식기(570)에 의해 인식되는 바와 같은 더블 탭 이벤트를 취한다. 더블 탭 이벤트를 취하기 위한 결정은 설정되는 탭 이벤트 인식기(590)의 배타 플래그(324), 더블 탭 이벤트를 포함하는 탭 이벤트 인식기(590)의 배타 예외 리스트(326), 및 탭 이벤트 인식기(590) 및 더블 탭 이벤트 인식기(570) 양자가 그들 각각의 이벤트 타입들을 성공적으로 인식한 사실의 결합을 고려하여 이루어진다.
아래의 표는 이벤트 인식기들(570, 590) 및 서브이벤트 처리 프로세스(440)와 관련된 바와 같은 서브이벤트 시퀀스(540)의 전달을 요약된 표 포맷으로 나타낸다.
서브이벤트 시퀀스(540) 상태: 더블 탭 이벤트 인식기(570) 상태: 탭 이벤트 인식기(590) 상태: 입력 소스 처리 프로세스(440)
전달 시작 전 이벤트 인식 시작(572) 이벤트 인식 시작(592)
손가락 다운 검출(541-1) 이벤트 가능(574) 이벤트 가능(594) 입력 시퀀스 시작(445)
지연 측정(541-2) 이벤트 가능(574) 이벤트 가능(594) 입력 시퀀스 계속(450)
손가락 리프트 오프 검출(541-3) 이벤트 가능(574) 이벤트 인식(596) 입력 시퀀스 계속(450)
지연 측정(541-4) 이벤트 가능(574) 이벤트 인식(596) 입력 시퀀스 계속(450)
손가락 다운 검출(541-5) 이벤트 가능(574) 이벤트 인식(596) 입력 시퀀스 계속(450)
지연 측정(541-6) 이벤트 가능(574) 이벤트 인식(596) 입력 시퀀스 계속(450)
손가락 리프트 오프 검출(541-7) 이벤트 인식(576) 이벤트 인식(596) 입력 시퀀스 종료(455)
다른 실시예에서, 도 5c의 이벤트 시나리오에서, 단일 탭 이벤트 인식기는 더블 탭 이벤트 인식기를 식별하는 대기 리스트를 가지므로, 단일 탭 제스처는 인식되지 않는다. 결과적으로, 더블 탭 이벤트 인식기가 (들어갈 경우) 이벤트 불가능 상태에 들어갈 때까지 단일 탭 제스처가 인식되지 않는다. 더블 탭 제스처가 인식되는 이 예에서, 단일 탭 이벤트 인식기는 더블 탭 제스처가 인식될 때까지 이벤트 가능 상태로 유지될 것이며, 더블 탭 제스처가 인식되는 시점에서 단일 탭 이벤트 인식기는 이벤트 불가능 상태로 전이할 것이다.
이제, 일부 실시예들에 따른 이벤트 인식 방법을 설명하는 흐름도들인 도 6a 및 6b에 주목한다. 방법(600)은 일부 실시예들에서 전술한 바와 같은 전자 장치(102)일 수 있는 전자 장치에서 수행된다. 일부 실시예들에서, 전자 장치는 다중 터치 제스처들을 검출하도록 구성되는 터치 감지 표면을 포함할 수 있다. 대안으로서, 전자 장치는 다중 터치 제스처들을 검출하도록 구성되는 터치스크린을 포함할 수 있다.
방법(600)은 복수의 뷰를 갖는 뷰 계층 구조를 포함하는 소프트웨어를 실행하도록 구성된다. 방법(600)은 뷰 계층 구조의 하나 이상의 뷰들을 표시하고(608), 하나 이상의 소프트웨어 요소들을 실행한다(610). 각각의 소프트웨어 요소는 특정 뷰와 관련되며, 각각의 특정 뷰는 각각 이벤트 인식기 구조들(320, 360)로서 도 3b 및 3c에서 설명된 것들과 같은 하나 이상의 이벤트 인식기들을 포함한다.
각각의 이벤트 인식기는 일반적으로 하나 이상의 서브이벤트들에 기초하는 이벤트 정의를 포함하며, 이벤트 정의는 상태 기계(예를 들어, 도 3b의 상태 기계(340) 참조)로서 구현될 수 있다. 이벤트 인식기들은 또한 일반적으로 이벤트 핸들러를 포함하며, 이 이벤트 핸들러는 타겟에 대한 액션을 지정하고, 이벤트 인식기가 이벤트 정의에 대응하는 이벤트를 검출하는 것에 응답하여 액션을 타겟으로 전송하도록 구성된다.
일부 실시예들에서, 복수의 이벤트 인식기 중 적어도 하나는 도 6a의 단계 612에 기재된 바와 같이 제스처 정의 및 제스처 핸들러를 갖는 제스처 인식기이다.
일부 실시예들에서, 이벤트 정의는 도 6a의 단계 614에 기재된 바와 같이 사용자 제스처를 정의한다.
대안으로서, 이벤트 인식기들은 이벤트 인식 상태들의 세트를 갖는다(616). 이러한 이벤트 인식 상태들은 적어도 이벤트 가능 상태, 이벤트 불가능 상태 및 이벤트 인식 상태를 포함할 수 있다.
일부 실시예들에서, 이벤트 핸들러는 이벤트 인식기가 이벤트 가능 상태에 들어가는 경우에 타겟으로 전달하기 위해 그의 대응하는 액션의 준비를 개시한다(618). 도 4a 및 도 5a-5c의 예들과 관련하여 전술한 바와 같이, 각각의 이벤트 인식기에 대해 구현되는 상태 기계들은 일반적으로 초기 상태, 예를 들어 이벤트 인식 시작 상태(405)를 포함한다. 이벤트 정의의 처음 부분을 형성하는 서브이벤트를 수신하는 것은 이벤트 가능 상태(410)로의 상태 변경을 유발한다. 따라서, 일부 실시예들에서, 이벤트 인식기가 이벤트 인식 시작 상태(405)로부터 이벤트 가능 상태(410)로 전이할 때, 이벤트 인식기의 이벤트 핸들러는 이벤트가 성공적으로 인식된 후에 이벤트 인식기의 타겟으로 전달할 그의 특정 액션의 준비를 개시할 수 있다.
한편, 일부 실시예들에서, 이벤트 핸들러는 이벤트 인식기가 이벤트 불가능 상태(420)에 들어가는 경우에 그의 대응하는 액션의 준비를 종료할 수 있다(620). 일부 실시예들에서, 대응하는 액션을 종료하는 것은 이벤트 핸들러의 대응하는 액션의 임의의 준비를 취소하는 것을 포함한다.
도 5b의 예는 이 실시예에 유익한데, 그 이유는 탭 이벤트 인식기(590)가 그의 액션의 준비(618)를 개시하였을 수 있지만, 이어서 손가락 이동 검출 서브이벤트(531-3)가 탭 이벤트 인식기(590)로 전달되면 인식기(590)가 이벤트 불가능 상태(598, 578)로 전이하기 때문이다. 그 시점에서, 탭 이벤트 인식기(590)는 그가 준비(618)를 개시한 액션의 준비를 종료할 수 있다(620).
일부 실시예들에서, 이벤트 핸들러는 이벤트 인식기가 이벤트 인식 상태에 들어가는 경우에 타겟으로 전달할 그의 대응하는 액션의 준비를 완료한다(622). 도 5c의 예는 이러한 실시예를 나타내는데, 그 이유는 더블 탭이 맵 뷰(305)에 대한 활성적으로 관련된 이벤트 인식기들에 의해 인식되며, 이것은 일부 구현들에서 맵 뷰(305)에 의해 표시되는 검색 결과의 선택 및/또는 실행에 결합된 이벤트이기 때문이다. 여기서, 더블 탭 이벤트 인식기(570)가 서브이벤트 시퀀스(540)로 구성된 더블 탭 이벤트를 성공적으로 인식한 후, 맵 뷰(305)의 이벤트 핸들러는 그가 활성화 명령을 수신했음을 지시하는 그의 액션의 준비를 완료한다(622).
일부 실시예들에서, 이벤트 핸들러는 그의 대응하는 액션을 이벤트 인식기와 관련된 타겟으로 전달한다(624). 도 5c의 예와 함께 계속하면, 준비된 액션, 즉 맵 뷰(305)의 활성화 명령이 임의의 적절한 프로그램 메소드 또는 객체일 수 있는 맵 뷰(305)와 관련된 특정 타겟으로 전달될 것이다.
대안으로서, 복수의 이벤트 인식기가 하나 이상의 서브이벤트들의 시퀀스를 병렬로 독립적으로 처리할 수 있다(626).
일부 실시예들에서, 하나 이상의 이벤트 인식기들은 각각 도 3b 및 3c의 배타 플래그들(324, 364)과 관련하여 전술한 바와 같이 배타 이벤트 인식기들로서 구성될 수 있다(628). 이벤트 인식기가 배타 이벤트 인식기로서 구성될 때, 이벤트 전달 시스템은 배타 이벤트 인식기가 이벤트를 인식한 후에 뷰 계층 구조 내의 (이벤트를 인식하는 이벤트 인식기의 예외 리스트(326, 366) 내에 목록화된 것들을 제외한) 활성적으로 관련된 뷰들에 대한 임의의 다른 이벤트 인식기들이 (서브이벤트들의 동일 시퀀스의) 후속 서브이벤트들을 수신하는 것을 방지한다. 더구나, 비배타 이벤트 인식기가 이벤트를 인식할 때, 이벤트 전달 시스템은 이벤트를 인식하는 이벤트 인식기의 예외 리스트(326, 366) 내에 목록화된 것들(존재하는 경우)을 제외하고 뷰 계층 구조 내의 활성적으로 관련된 뷰들에 대한 임의의 배타 이벤트 인식기들이 후속 서브이벤트들을 수신하는 것을 방지한다.
일부 실시예들에서, 배타 이벤트 인식기들은 각각 도 3b 및 3c의 배타 예외 리스트들(326, 366)과 관련하여 전술한 바와 같이 이벤트 예외 리스트를 포함할 수 있다(630). 위의 도 5c의 설명에서 주목된 바와 같이, 이벤트 인식기의 배타 예외 리스트는 이벤트 인식기들로 하여금 그들 각각의 이벤트 정의들을 구성하는 서브이벤트들의 시퀀스가 오버랩될 때에도 이벤트 인식을 계속하는 것을 허가하는 데 사용될 수 있다. 따라서, 일부 실시예들에서, 이벤트 예외 리스트는 대응하는 이벤트 정의들이 도 5c의 단일 탭/더블 탭 이벤트 예와 같은 반복 서브이벤트들을 갖는 이벤트들을 포함한다(632).
대안으로서, 이벤트 정의는 사용자 입력 동작을 정의할 수 있다(634).
일부 실시예들에서, 하나 이상의 이벤트 인식기는 이벤트가 인식된 후에 서브이벤트들의 시퀀스의 모든 서브이벤트의 전달을 지연시키도록 적응될 수 있다.
방법(600)은 하나 이상의 서브이벤트들의 시퀀스를 검출하며(636), 일부 실시예들에서 하나 이상의 서브이벤트들의 시퀀스는 프리미티브 터치 이벤트들을 포함할 수 있다(638). 프리미티브 터치 이벤트들은 최초 손가락 또는 스타일러스 터치 다운과 관련된 데이터, 터치 감지 표면을 가로지르는 다중 손가락 또는 스타일러스 이동의 개시와 관련된 데이터, 반대 방향들에서의 이중 손가락 이동들, 터치 감지 표면으로부터의 스타일러스 리프트 오프 등과 같은 터치 감지 표면 상에서의 터치 기반 제스처의 기본 컴포넌트들을 포함할 수 있지만 이에 한정되지 않는다.
하나 이상의 서브이벤트들의 시퀀스 내의 서브이벤트들은 특히 키 누름, 키 누름 유지, 키 누름 해제, 버튼 누름, 버튼 누름 유지, 버튼 누름 해제, 조이스틱 이동, 마우스 이동, 마우스 버튼 누름, 마우스 버튼 해제, 펜 스타일러스 터치, 펜 스타일러스 이동, 펜 스타일러스 해제, 구두 명령, 눈 움직임 검출, 바이오메트릭 입력 및 사용자의 생리적 변화의 검출을 포함하지만 이에 한정되지 않는 많은 형태를 포함할 수 있다.
방법(600)은 뷰 계층 구조의 뷰들 중 하나를 히트 뷰로서 식별한다(640). 히트 뷰는 뷰 계층 구조 내의 어떤 뷰들이 활성적으로 관련된 뷰들인지를 설정한다. 일례가 도 3a에 도시되며, 여기서 활성적으로 관련된 뷰들(303)은 검색 결과 패널(304) 및 맵 뷰(305)를 포함하는데, 이는 터치 서브이벤트(301)가 맵 뷰(305)와 관련된 영역과 접촉하였기 때문이다.
일부 실시예들에서, 뷰 계층 구조 내의 제1의 활성적으로 관련된 뷰는 그 제1의 활성적으로 관련된 뷰와 관련된 이벤트 인식기들로의 각각의 서브이벤트의 전달을 방지하도록 구성될 수 있다(642). 이러한 거동은 도 3b 및 3c(각각 330 및 370)와 관련하여 전술한 스킵 특성을 구현할 수 있다. 스킵 특성이 이벤트 인식기에 대해 설정될 때, 각각의 서브이벤트의 전달은 뷰 계층 구조 내의 다른 활성적으로 관련된 뷰들과 관련된 이벤트 인식기들에 대해 여전히 수행된다.
대안으로서, 뷰 계층 구조 내의 제1의 활성적으로 관련된 뷰는 제1의 활성적으로 관련된 뷰가 히트 뷰가 아닌 경우에 제1의 활성적으로 관련된 뷰와 관련된 이벤트 인식기들로의 각각의 서브이벤트의 전달을 방지하도록 구성될 수 있다(644). 이러한 거동은 도 3b 및 3c(각각 332 및 372)와 관련하여 전술한 조건부 스킵 특성을 구현할 수 있다.
일부 실시예들에서, 뷰 계층 구조 내의 제2의 활성적으로 관련된 뷰는 제2의 활성적으로 관련된 뷰와 관련된 이벤트 인식기들로의 그리고 제2의 활성적으로 관련된 뷰의 조상들과 관련된 이벤트 인식기들로의 각각의 서브이벤트의 전달을 방지하도록 구성된다(646). 이러한 거동은 도 3b 및 3c(각각 328, 368)와 관련하여 전술한 저지 특성을 구현할 수 있다.
방법(600)은 뷰 계층 구조 내의 각각의 활성적으로 관련된 뷰에 대한 이벤트 인식기들로 각각의 서브이벤트를 전달한다(648). 일부 실시예들에서, 뷰 계층 구조 내의 활성적으로 관련된 뷰들에 대한 이벤트 인식기들은 서브이벤트들의 시퀀스 내의 다음 서브이벤트를 처리하기 전에 각각의 서브이벤트를 처리한다. 대안으로서, 뷰 계층 구조 내의 활성적으로 관련된 뷰들에 대한 이벤트 인식기들은 각각의 서브이벤트를 처리하는 동안에 그들의 서브이벤트 인식 결정들을 행한다.
일부 실시예들에서, 뷰 계층 구조 내의 활성적으로 관련된 뷰들에 대한 이벤트 인식기들은 하나 이상의 서브이벤트들의 시퀀스를 동시에 처리할 수 있으며(650); 대안으로서 뷰 계층 구조 내의 활성적으로 관련된 뷰들에 대한 이벤트 인식기들은 하나 이상의 서브이벤트들의 시퀀스를 병렬로 처리할 수 있다.
일부 실시예들에서, 하나 이상의 이벤트 인식기들은 이벤트 인식기가 이벤트를 인식한 후까지 서브이벤트들의 시퀀스의 하나 이상의 서브이벤트들의 전달을 지연시키도록 적응될 수 있다(652). 이러한 거동은 지연된 이벤트를 반영한다. 예를 들어, 다수의 탭 제스처가 가능한 뷰에서의 단일 탭 제스처를 고려한다. 그러한 경우, 탭 이벤트는 "탭 + 지연" 인식기가 된다. 본질적으로, 이벤트 인식기가 이러한 거동을 구현할 때, 이벤트 인식기는 서브이벤트들의 시퀀스가 사실상 그의 이벤트 정의에 대응하는 것이 확실할 때까지 이벤트 인식을 지연시킬 것이다. 이러한 거동은 수신 뷰가 취소된 이벤트들에 적절히 응답할 수 없을 때 적합할 것이다. 일부 실시예들에서, 이벤트 인식기는 이벤트 인식기가 서브이벤트들의 시퀀스가 그의 이벤트 정의에 대응하지 않는 것을 확신할 때까지 그의 각각의 활성적으로 관련된 뷰로의 그의 이벤트 인식 상태의 갱신을 지연시킬 것이다. 도 3b 및 3c와 관련하여 전술한 바와 같이, 터치 시작 지연 플래그(328, 368), 터치 종료 지연 플래그(330, 370) 및 터치 취소 플래그(332, 372)는 서브이벤트 전달 기술들은 물론, 이벤트 인식기 및 뷰 상태 정보 갱신들을 특정 요구들에 대해 맞춤화하기 위해 제공된다.
도 7a-7s는 일부 실시예들에 따른, 동시에 열린 애플리케이션들을 통해 내비게이션하기 위해 이벤트 인식기들에 의해 인식되는 예시적인 사용자 인터페이스들 및 사용자 입력들을 나타낸다. 이 도면들 내의 사용자 인터페이스들은 도 8a-8b, 도 9a-9c 및 도 10a-10b의 프로세스들을 포함하는 후술하는 프로세스들을 설명하는 데 사용된다.
이어지는 예들 중 다수가 (터치 감지 표면 및 디스플레이가 결합된) 터치 스크린 디스플레이(156) 상에서의 입력과 관련하여 제공되지만, 일부 실시예들에서 장치는 디스플레이로부터 분리된 터치 감지 표면(예를 들어, 터치 패드 또는 트랙 패드) 상에서 입력들을 검출한다. 일부 실시예들에서, 터치 감지 표면은 디스플레이 상의 주축에 대응하는 주축을 갖는다. 이러한 실시예들에 따르면, 장치는 디스플레이 상의 각각의 위치들에 대응하는 위치들에서 터치 감지 표면과의 접촉을 검출한다. 이러한 방식으로, 터치 감지 표면 상에서 장치에 의해 검출되는 사용자 입력들은 터치 감지 표면이 디스플레이로부터 분리된 때 전자 장치의 디스플레이 상에서 사용자 인터페이스를 조작하기 위해 장치에 의해 사용된다. 본 명세서에서 설명되는 다른 사용자 인터페이스들에 대해 유사한 방법들이 이용될 수 있다는 것을 이해해야 한다.
도 7a는 일부 실시예들에 따른 전자 장치(102) 상의 예시적인 사용자 인터페이스("홈 스크린"(708))를 나타낸다. 유사한 사용자 인터페이스들이 전자 장치들(102) 상에 구현될 수 있다. 일부 실시예들에서, 홈 스크린(708)은 때때로 스프링보드라고 하는 애플리케이션 런처 소프트웨어 애플리케이션에 의해 표시된다. 일부 실시예들에서, 터치 스크린(156) 상의 사용자 인터페이스는 아래의 요소들, 또는 이들의 서브세트 또는 수퍼세트를 포함한다.
- 셀룰러 및 Wi-Fi 신호들과 같은 무선 통신(들)에 대한 신호 강도 지시자(들)(702);
- 시간(704); 및
- 배터리 상태 지시자(706).
예시적인 사용자 인터페이스는 복수의 애플리케이션 아이콘(5002)(예를 들어, 5002-25 내지 5002-38)을 포함한다. 홈 스크린(708)으로부터, 손가락 제스처를 이용하여 애플리케이션을 런칭할 수 있다. 예를 들어, 애플리케이션 아이콘(5002-36)에 대응하는 위치에서의 탭 손가락 제스처(701)는 이메일 애플리케이션의 런칭을 개시한다.
도 7b에서, 애플리케이션 아이콘(5002-36) 상의 손가락 제스처(701)의 검출에 응답하여, 이메일 애플리케이션이 런칭되고, 이메일 애플리케이션 뷰(712-1)가 터치 스크린(156) 상에 표시된다. 사용자는 유사한 방식으로 다른 애플리케이션들을 런칭할 수 있다. 예를 들어, 사용자는 임의의 애플리케이션 뷰(712)로부터 홈 버튼(710)을 눌러 홈 스크린(708)(도 7a)으로 복귀하고, 홈 스크린(708) 상의 각각의 애플리케이션 아이콘들(5002) 상에서의 손가락 제스처들을 이용하여 다른 애플리케이션들을 런칭할 수 있다.
도 7c-7g는 각각의 애플리케이션들이 홈 스크린(708) 상의 각각의 애플리케이션 아이콘들(5002)에 대응하는 위치들에서의 각각의 손가락 제스처들의 검출에 응답하여 순차적으로 런칭되고, 각각의 사용자 인터페이스들(즉, 각각의 애플리케이션 뷰들)이 차례차례 표시되는 것을 나타낸다. 구체적으로, 도 7c는 미디어 저장 애플리케이션 뷰(712-2)가 애플리케이션 아이콘(5002-32) 상에서의 손가락 제스처에 응답하여 표시되는 것을 나타낸다. 도 7d에서는, 애플리케이션 아이콘(5002-30) 상의 손가락 제스처에 응답하여 노트 애플리케이션 뷰(712-3)가 표시된다. 도 7e는 애플리케이션 아이콘(5002-27) 상에서의 손가락 제스처에 응답하여 맵 애플리케이션 뷰(712-4)가 표시되는 것을 나타낸다. 도 7f에서는, 애플리케이션 아이콘(5002-28) 상에서의 손가락 제스처에 응답하여 날씨 애플리케이션 뷰(712-5)가 표시된다. 도 7g는 애플리케이션 아이콘(5002-37) 상에서의 손가락 제스처에 응답하여 웹 브라우저 애플리케이션 뷰(712-6)가 표시되는 것을 나타낸다. 일부 실시예들에서, 열린 애플리케이션들의 시퀀스는 이메일 애플리케이션, 미디어 저장 애플리케이션, 노트 애플리케이션, 맵 애플리케이션, 날씨 애플리케이션 및 웹 브라우저 애플리케이션의 런칭에 대응한다.
도 7g는 또한 사용자 인터페이스 객체(예로서, 북마크 아이콘) 상에서의 손가락 제스처(703)(예로서, 탭 제스처)를 나타낸다. 일부 실시예들에서, 북마크 아이콘 상에서의 손가락 제스처(703)의 검출에 응답하여, 웹 브라우저 애플리케이션은 터치 스크린(156) 상에 북마크들의 리스트를 표시한다. 유사하게, 사용자는 다른 제스처들(예로서, 사용자로 하여금 통상적으로 온-스크린 키보드를 이용하여 새로운 어드레스를 타이핑하거나 표시된 어드레스를 수정할 수 있게 하는 어드레스 사용자 인터페이스 객체 상에서의 탭 제스처; 선택된 링크에 대응하는 웹페이지로의 내비게이션을 개시하는 표시된 웹페이지 내의 임의의 링크 상에서의 탭 제스처 등)을 이용하여 표시된 애플리케이션(예로서, 웹 브라우저 애플리케이션)과 상호작용할 수 있다.
도 7g에서, 제1의 사전 정의된 입력(예로서, 홈 버튼(710) 상에서의 더블 클릭(705))이 검출된다. 대안으로서, 터치 스크린(156) 상에서 다중 손가락 스와이프 제스처(예로서, 손가락 접촉들(707, 709, 711)의 이동들로 도시된 바와 같은 3 손가락 스와이프-업 제스처)가 검출된다.
도 7h는 제1의 사전 정의된 입력(예로서, 더블 클릭(705) 또는 손가락 접촉들(707, 709, 711)을 포함하는 다중 손가락 스와이프 제스처)의 검출에 응답하여 웹 브라우저 애플리케이션 뷰(712-6)의 일부 및 애플리케이션 아이콘 영역(716)이 동시에 표시되는 것을 나타낸다. 일부 실시예들에서, 제1의 사전 정의된 입력의 검출에 응답하여, 장치는 동시에 열린 애플리케이션들 중 하나를 선택하기 위한 애플리케이션 뷰 선택 모드에 들어가며, 웹 브라우저 애플리케이션 뷰(712-6)의 일부 및 애플리케이션 아이콘 영역(716)은 애플리케이션 뷰 선택 모드의 일부로서 동시에 표시된다. 애플리케이션 아이콘 영역(716)은 복수의 동시에 열린 애플리케이션 중 적어도 일부에 대응하는 열린 애플리케이션 아이콘들의 그룹을 포함한다. 이 예에서, 휴대용 전자 장치는 동시에 열리는 다수의 애플리케이션(예로서, 이메일 애플리케이션, 미디어 저장 애플리케이션, 노트 애플리케이션, 맵 애플리케이션, 날씨 애플리케이션 및 웹 브라우저 애플리케이션)을 갖지만, 이들 모두가 동시에 표시되지는 않는다. 도 7h에 도시된 바와 같이, 애플리케이션 아이콘 영역(506)은 날씨 애플리케이션, 맵 애플리케이션, 노트 애플리케이션 및 미디어 저장 애플리케이션(즉, 열린 애플리케이션들의 시퀀스에서 현재 표시된 애플리케이션인 웹 브라우저 애플리케이션에 바로 이어지는 4개의 애플리케이션)에 대한 애플리케이션 아이콘들(예로서, 5004-2, 5004-4, 5004-6, 5004-8)을 포함한다. 일부 실시예들에서, 애플리케이션 아이콘 영역(716)에 표시된 열린 애플리케이션 아이콘들의 시퀀스 또는 순서는 사전 결정된 시퀀스(예로서, 날씨, 맵, 노트 및 미디어 저장 애플리케이션들)에서의 열린 애플리케이션들의 시퀀스에 대응한다.
도 7h는 또한 열린 애플리케이션 아이콘(5004-8) 상에서 제스처(713)(예로서, 탭 제스처)가 검출되는 것을 나타낸다. 일부 실시예들에서, 제스처(713)의 검출에 응답하여, 대응하는 애플리케이션 뷰(예로서, 도 7c의 미디어 저장 애플리케이션 뷰(712-2))가 표시된다.
도 7h는 애플리케이션 아이콘 영역(716)에 대응하는 위치에서 좌측 스와이프(715)가 검출되는 것을 나타낸다. 도 7i에서, 좌측 스와이프 제스처(715)에 응답하여, 애플리케이션 아이콘 영역(716) 내의 애플리케이션 아이콘들(예로서, 5004-2, 5004-4, 5004-6, 5004-8)이 스크롤된다. 스크롤링의 결과로서, 이전에 표시된 애플리케이션 아이콘들(예로서, 5004-2, 5004-4, 5004-6, 5004-8) 대신에 애플리케이션 아이콘 영역(506) 내에 이메일 애플리케이션에 대한 애플리케이션 아이콘(5004-12)이 표시된다.
도 7j에서, 웹 브라우저 애플리케이션 뷰(712-6) 상에서 제1 타입의 제스처(예로서, 손가락 접촉들(717, 719, 721)의 이동들을 포함하는 다중 손가락 좌측 스와이프 제스처)가 검출된다. 도 7k는 제1 타입의 제스처의 검출에 응답하여 터치 스크린(156) 상에 날씨 애플리케이션 뷰(712-5)가 표시되는 것을 나타낸다. 날씨 애플리케이션은 열린 애플리케이션들의 시퀀스에서 웹 브라우저 애플리케이션의 다음이라는 점에 유의해야 한다.
도 7k는 또한 날씨 애플리케이션 뷰(712-5) 상에서 제1 타입의 제2 제스처(예로서, 손가락 접촉들(723, 725, 727)의 이동들을 포함하는 다중 손가락 좌측 스와이프 제스처)가 검출되는 것을 나타낸다. 도 7l은 제1 타입의 제2 제스처의 검출에 응답하여 터치 스크린(156) 상에 맵 애플리케이션 뷰(712-4)가 표시되는 것을 나타낸다. 맵 애플리케이션은 열린 애플리케이션들의 시퀀스에서 날씨 애플리케이션의 다음이라는 점에 유의해야 한다.
도 7l은 또한 맵 애플리케이션 뷰(712-4) 상에서 제1 타입의 제3 제스처(예로서, 손가락 접촉들(729, 731, 733)의 이동들을 포함하는 다중 손가락 좌측 스와이프 제스처)가 검출되는 것을 나타낸다. 도 7m은 제1 타입의 제3 제스처의 검출에 응답하여 터치 스크린(156) 상에 노트 애플리케이션 뷰(712-3)가 표시되는 것을 나타낸다. 노트 애플리케이션은 열린 애플리케이션들의 시퀀스에서 맵 애플리케이션의 다음이라는 점에 유의해야 한다.
도 7m은 또한 노트 애플리케이션 뷰(712-3) 상에서 제1 타입의 제4 제스처(예로서, 손가락 접촉들(735, 737, 739)의 이동들을 포함하는 다중 손가락 좌측 스와이프 제스처)가 검출되는 것을 나타낸다. 도 7n은 제1 타입의 제4 제스처의 검출에 응답하여 터치 스크린(156) 상에 미디어 저장 애플리케이션 뷰(712-2)가 표시되는 것을 나타낸다. 미디어 저장 애플리케이션은 열린 애플리케이션들의 시퀀스에서 노트 애플리케이션의 다음이라는 점에 유의해야 한다.
도 7n은 또한 미디어 저장 애플리케이션 뷰(712-2) 상에서 제1 타입의 제5 제스처(예로서, 손가락 접촉들(741, 743, 745)의 이동들을 포함하는 다중 손가락 좌측 스와이프 제스처)가 검출되는 것을 나타낸다. 도 7o는 제1 타입의 제5 제스처의 검출에 응답하여 터치 스크린(156) 상에 이메일 애플리케이션 뷰(712-1)가 표시되는 것을 나타낸다. 이메일 애플리케이션은 열린 애플리케이션들의 시퀀스에서 미디어 저장 애플리케이션의 다음이라는 점에 유의해야 한다.
도 7o는 또한 이메일 애플리케이션 뷰(712-1) 상에서 제1 타입의 제6 제스처(예로서, 손가락 접촉들(747, 749, 751)의 이동들을 포함하는 다중 손가락 좌측 스와이프 제스처)가 검출되는 것을 나타낸다. 도 7p는 제1 타입의 제6 제스처의 검출에 응답하여 터치 스크린(156) 상에 웹 브라우저 애플리케이션 뷰(712-6)가 표시되는 것을 나타낸다. 웹 브라우저 애플리케이션은 열린 애플리케이션들의 시퀀스의 한쪽 끝에 있으며, 이메일 애플리케이션은 열린 애플리케이션들의 시퀀스의 다른 쪽 끝에 있다는 점에 유의해야 한다.
도 7p는 또한 제2 타입의 제스처(예로서, 손가락 접촉들(753, 755, 757)의 이동들을 포함하는 다중 손가락 우측 스와이프 제스처)가 웹 브라우저 애플리케이션 뷰(712-6) 상에서 검출되는 것을 나타낸다. 도 7q는 일부 실시예들에서 제2 타입의 제스처의 검출에 응답하여 터치 스크린(156) 상에 이메일 애플리케이션 뷰(712-1)가 표시되는 것을 나타낸다.
도 7r을 참조하면, 웹 브라우저 애플리케이션 뷰(712-6) 상에서 다중 손가락 제스처(예로서, 손가락 접촉들(759, 761, 763, 765, 767)의 이동들을 포함하는 5 손가락 핀치 제스처)가 검출된다. 도 7s는 터치 스크린(156) 상에서 다중 손가락 제스처를 검출하는 동안에 웹 브라우저 애플리케이션 뷰(712-6) 및 홈 스크린(708)의 적어도 일부가 동시에 표시되는 것을 나타낸다. 도시된 바와 같이, 웹 브라우저 애플리케이션 뷰(712-6)는 축소된 스케일로 표시된다. 축소된 스케일은 다중 손가락 제스처가 터치 스크린(156) 상에서 검출되는 동안에 다중 손가락 제스처에 따라 조정된다. 예를 들어, 축소된 스케일은 손가락 접촉들(759, 761, 763, 765, 767)의 추가적인 핀칭에 따라 감소한다(즉, 웹 브라우저 애플리케이션 뷰(712-6)는 더 작은 스케일로 표시된다). 대안으로서, 축소된 스케일은 손가락 접촉들(759, 761, 763, 765, 767)의 디핀칭에 따라 증가한다(즉, 웹 브라우저 애플리케이션 뷰(712-6)는 전보다 큰 스케일로 표시된다).
일부 실시예들에서, 다중 손가락 제스처의 검출이 중단될 때, 웹 브라우저 애플리케이션 뷰(712-6)의 표시가 중단되고, 전체 홈 스크린(708)이 표시된다. 대안으로서, 다중 손가락 제스처의 검출이 중단될 때, 전체 홈 스크린(708)이 표시될지 또는 웹 브라우저 애플리케이션 뷰(712-6)가 풀-스크린 스케일로 표시될지를 결정한다. 일부 실시예들에서, 결정은 다중 손가락 제스처의 표시가 중단될 때 축소된 스케일에 기초하여 이루어진다(예를 들어, 다중 손가락 제스처의 검출이 중단될 때 애플리케이션 뷰가 사전 정의된 임계치보다 작은 스케일로 표시되는 경우, 전체 홈 스크린(708)이 표시되고; 다중 손가락 제스처의 검출이 중단될 때 애플리케이션 뷰가 사전 정의된 임계치보다 큰 스케일로 표시될 때, 홈 스크린(708)의 표시 없이 애플리케이션 뷰가 풀-스크린 스케일로 표시된다). 일부 실시예들에서, 결정은 또한 다중 손가락 제스처의 속도에 기초하여 이루어진다.
도 8a 및 8b는 일부 실시예들에 따른 이벤트 인식 방법(800)을 나타내는 흐름도들이다. 방법(800)은 터치 감지 디스플레이를 갖는 전자 장치(예로서, 도 1b의 장치(102))에서 수행된다(802). 전자 장치는 적어도 제1 소프트웨어 애플리케이션 및 제2 소프트웨어 애플리케이션을 실행하도록 구성된다. 제1 소프트웨어 애플리케이션은 하나 이상의 제스처 인식기들의 제1 세트를 포함하고, 제2 소프트웨어 애플리케이션은 하나 이상의 뷰들 및 하나 이상의 제스처 인식기들의 제2 세트를 포함한다(예로서, 도 3f에서, 애플리케이션(133-2)은 제스처 인식기(516-4)를 갖고, 애플리케이션(133-1)은 제스처 인식기들(516-1 내지 516-3) 및 뷰들(508, 510, 512)을 갖는다). 각각의 제스처 인식기들은 대응하는 제스처 핸들러들을 갖는다(예를 들어, 제스처 핸들러(552-1)는 제스처 인식기(516-1)에 대응하고, 제스처 핸들러(552-3)는 제스처 인식기(516-4)에 대응한다). 하나 이상의 제스처 인식기들의 제1 세트는 통상적으로 하나 이상의 제스처 인식기들의 제2 세트와 다르다.
방법(800)은 사용자가 제스처를 이용하여 배경 애플리케이션, 중지된 애플리케이션 또는 동면하는 애플리케이션과 같이 현재 전자 장치의 디스플레이 상에 표시되지 않은 숨겨진 열린 애플리케이션(예로서, 제1 소프트웨어 애플리케이션)을 제어할 수 있게 해준다. 따라서, 사용자는 현재 전자 장치의 디스플레이 상에 표시된 애플리케이션(예로서, 제2 소프트웨어 애플리케이션)에 의해 제공되지 않지만 현재 열린 애플리케이션들 중 하나에 의해 제공되는 동작들을 수행할 수 있다(예를 들어, 숨겨진 애플리케이션 런처 소프트웨어 애플리케이션에 대한 제스처들을 이용하여 홈 스크린을 표시하거나 다음 소프트웨어 애플리케이션으로 스위칭할 수 있다).
일부 실시예들에서, 제1 소프트웨어 애플리케이션은 애플리케이션 런처(예로서, 스프링보드)이다(804). 예를 들어, 도 7a에 도시된 바와 같이, 애플리케이션 런처는 복수의 애플리케이션에 대응하는 복수의 애플리케이션 아이콘(5002)을 표시한다. 애플리케이션 런처는 (예로서, 터치 스크린(156) 상에서의 손가락 제스처에 기초하여) 애플리케이션 아이콘(5002)의 사용자 선택을 수신하고, 사용자 선택의 수신에 응답하여 선택된 애플리케이션 아이콘(5002)에 대응하는 애플리케이션을 런칭한다.
제2 소프트웨어 애플리케이션은 통상적으로 애플리케이션 런처에 의해 런칭되는 소프트웨어 애플리케이션이다. 도 7a 및 7b에 도시된 바와 같이, 애플리케이션 런처는 이메일 애플리케이션 아이콘(5002-36) 상에서의 탭 제스처(701)에 대한 정보를 수신하고, 이메일 애플리케이션을 런칭한다. 이에 응답하여, 이메일 애플리케이션은 터치 스크린(156) 상에 이메일 애플리케이션 뷰(712-1)를 표시한다. 제2 애플리케이션은 애플리케이션 아이콘들(5002)(도 7a)에 대응하는 임의의 애플리케이션 또는 애플리케이션 런처에 의해 런칭될 수 있는 임의의 다른 애플리케이션(예로서, 도 7c의 미디어 저장 애플리케이션; 도 7d의 노트 애플리케이션; 도 7e의 맵 애플리케이션; 도 7f의 날씨 애플리케이션; 도 7g의 웹 브라우저 애플리케이션 등)일 수 있다. 방법(800)에 대한 아래의 설명에서는, 애플리케이션 런처가 예시적인 제1 소프트웨어 애플리케이션으로 사용되고, 웹 브라우저 애플리케이션이 예시적인 제2 소프트웨어 애플리케이션으로 사용된다.
일부 실시예들에서, 전자 장치는 프로그램 계층 구조 내에 단지 2개의 소프트웨어 애플리케이션, 즉 애플리케이션 런처 및 하나의 다른 소프트웨어 애플리케이션(통상적으로, 소프트웨어 애플리케이션은 전자 장치(102)의 터치 스크린(156) 상에 표시되는 하나 이상의 뷰들에 대응함)을 갖는다.
일부 실시예들에서, 제1 소프트웨어 애플리케이션은 운영 체제 애플리케이션이다(806). 본 명세서에서 사용될 때, 운영 체제 애플리케이션은 운영 체제(118)(도 1a-1c)와 통합되는 애플리케이션을 지칭한다. 운영 체제 애플리케이션은 통상적으로 도 2의 코어 OS 레벨(208) 또는 운영 체제 API 소프트웨어(206) 내에 상주한다. 운영 체제 애플리케이션은 통상적으로 사용자에 의해 제거될 수 없는 반면, 다른 애플리케이션들은 통상적으로 사용자에 의해 설치 또는 제거될 수 있다. 일부 실시예들에서, 운영 체제 애플리케이션은 애플리케이션 런처를 포함한다. 일부 실시예들에서, 운영 체제 애플리케이션은 설정 애플리케이션(예를 들어, 도 1c에서 시스템 설정들 또는 장치/전역 내부 상태(134) 내의 하나 이상의 값들을 표시/변경하기 위한 애플리케이션)을 포함한다. 일부 실시예들에서, 운영 체제 애플리케이션은 액세스 가능성 모듈(127)을 포함한다. 일부 실시예들에서, 전자 장치는 프로그램 계층 구조 내에 단지 3개의 소프트웨어 애플리케이션, 즉 애플리케이션 런처, 설정 애플리케이션 및 하나의 다른 애플리케이션(통상적으로, 소프트웨어 애플리케이션은 전자 장치(102)의 터치 스크린(156) 상에 표시되는 하나 이상의 뷰들에 대응함)만을 갖는다.
전자 장치는 적어도 제2 소프트웨어 애플리케이션의 하나 이상의 뷰들의 서브세트(예로서, 도 7g의 웹 브라우저 애플리케이션 뷰(712-6))를 표시한다(808).
일부 실시예들에서, 표시는 제1 소프트웨어 애플리케이션의 어떠한 뷰도 표시하지 않고 적어도 제2 소프트웨어 애플리케이션의 하나 이상의 뷰들의 서브세트를 표시하는 것을 포함한다(810). 예를 들어, 도 7g에서, 애플리케이션 런처의 어떠한 뷰(예로서, 홈 스크린(708))도 표시되지 않는다.
일부 실시예들에서, 표시는 어떠한 다른 애플리케이션의 뷰도 표시하지 않고 적어도 제2 소프트웨어 애플리케이션의 하나 이상의 뷰들의 서브세트를 표시하는 것을 포함한다(812). 예를 들어, 도 7g에서, 웹 브라우저 애플리케이션의 하나 이상의 뷰들만이 표시된다.
적어도 제2 소프트웨어 애플리케이션의 하나 이상의 뷰들의 서브세트를 표시하는 동안, 전자 장치는 터치 감지 디스플레이 상에서 터치 입력들의 시퀀스(예로서, 터치 다운 이벤트 및 터치 업 이벤트를 포함하는 제스처(703); 또는 손가락 접촉들(707, 709, 711)의 터치 다운, 손가락 접촉들(707, 709, 711)의 터치 스크린(156)을 가로지르는 이동들, 및 손가락 접촉들(707, 709, 711)의 리프트 오프를 포함하는 다른 제스처)를 검출한다(814). 터치 입력들의 시퀀스는 하나 이상의 터치 입력들의 제1 부분 및 제1 부분에 이어지는 하나 이상의 터치 입력들의 제2 부분을 포함한다. 본 명세서에서 사용될 때, "시퀀스"라는 용어는 하나 이상의 터치 이벤트들이 발생하는 순서를 지칭한다. 예를 들어, 손가락 접촉들(707, 709, 711)을 포함하는 터치 입력들의 시퀀스에서, 제1 부분은 손가락 접촉들(707, 709, 711)의 터치 다운을 포함할 수 있고, 제2 부분은 손가락 접촉들(707, 709, 711)의 이동들 및 손가락 접촉들(707, 709, 711)의 리프트 오프를 포함할 수 있다.
일부 실시예들에서, 검출은 하나 이상의 터치 입력들의 제1 부분 내의 터치 입력들이 제2 소프트웨어 애플리케이션의 표시된 뷰들 중 적어도 하나와 적어도 부분적으로 오버랩되는 동안에 발생한다(816). 일부 실시예들에서, 터치 입력들이 제2 소프트웨어 애플리케이션의 표시된 뷰들 중 적어도 하나와 적어도 부분적으로 오버랩되더라도, 제1 소프트웨어 애플리케이션은 하나 이상의 터치 입력들의 제1 부분을 수신한다. 예를 들어, 애플리케이션 런처는 애플리케이션 런처가 표시되지 않는 경우에도 웹 브라우저(도 7g)의 표시된 뷰들 상에서 터치 입력들의 제1 부분을 수신한다.
터치 입력들의 시퀀스를 검출하는 제1 페이즈 동안(818), 전자 장치는 하나 이상의 터치 입력들의 제1 부분을 (예로서, 도 3d의 이벤트 디스패처 모듈(315)을 이용하여) 제1 소프트웨어 애플리케이션 및 제2 소프트웨어 애플리케이션으로 전달하고(820), (예로서, 도 3d의 제1 세트 내의 각각의 제스처 인식기(통상적으로 각각의 수신 제스처 인식기) 내의 이벤트 비교기(3033)를 이용하여) 제1 세트 내의 제스처 인식기들로부터 하나 이상의 터치 입력들의 제1 부분을 인식하는 하나 이상의 매칭 제스처 인식기들을 식별하고(822), (예로서, 도 3d의 대응하는 이벤트 핸들러(들)(319)를 활성화하는) 하나 이상의 매칭 제스처 인식기들에 대응하는 하나 이상의 제스처 핸들러들을 이용하여 하나 이상의 터치 입력들의 제1 부분을 처리한다(824).
일부 실시예들에서, 터치 입력들의 시퀀스를 검출하는 제1 페이즈는 하나 이상의 터치 입력들의 제1 부분을 검출하는 페이즈다.
전달 동작(820)과 관련하여, 일부 실시예들에서, 제1 소프트웨어 애플리케이션은 하나 이상의 입력들의 제1 부분을 수신한 후에 하나 이상의 터치 입력들의 제1 부분을 적어도 제1 세트 내의 제스처 인식기들의 서브세트로 전달하며, 제2 소프트웨어 애플리케이션은 하나 이상의 입력들의 제1 부분을 수신한 후에 하나 이상의 터치 입력들의 제1 부분을 적어도 제2 세트 내의 제스처 인식기들의 서브세트로 전달한다. 일부 실시예들에서, 전자 장치 또는 전자 장치 내의 이벤트 디스패처 모듈(예로서, 도 3d의 315)은 하나 이상의 터치 입력들의 제1 부분을 적어도 제1 세트 및 제2 세트 내의 제스처 인식기들의 서브세트로 전달한다(예로서, 이벤트 디스패처 모듈(315)은 하나 이상의 터치 입력들의 제1 부분을 도 3f의 제스처 인식기들(516-1, 516-2, 516-4)로 전달한다).
예를 들어, 손가락 접촉들(707, 709, 711)을 포함하는 손가락 제스처가 터치 스크린(156)(도 7g) 상에서 검출될 때, 터치 다운 이벤트가 애플리케이션 런처의 하나 이상의 제스처 인식기들 및 웹 브라우저 애플리케이션의 하나 이상의 제스처 인식기들로 전달된다. 다른 예에서는, 탭 제스처(703)(도 7g)의 터치 다운 이벤트가 애플리케이션 런처의 하나 이상의 제스처 인식기들 및 웹 브라우저 애플리케이션의 하나 이상의 제스처 인식기들로 전달된다.
일부 실시예들에서, 제1 세트 내의 어떠한 제스처 인식기도 하나 이상의 터치 입력들의 제1 부분을 인식하지 못할 때(예를 들어, 검출된 이벤트들과 제스처 정의 사이의 미스매치 또는 제스처의 미완료), 하나 이상의 터치 입력들의 제1 부분을 처리하는 것은 공백 동작을 수행하는 것을 포함한다(예를 들어, 장치는 표시된 사용자 인터페이스를 갱신하지 않는다).
일부 실시예들에서, 전자 장치는 제2 세트 내의 제스처 인식기들로부터 하나 이상의 터치 입력들의 제1 부분을 인식하는 하나 이상의 매칭 제스처 인식기들을 식별한다. 전자 장치는 하나 이상의 매칭 제스처 인식기들에 대응하는 하나 이상의 제스처 핸들러들을 이용하여 하나 이상의 터치 입력들의 제1 부분을 처리한다. 예를 들어, 웹 브라우저 애플리케이션의 하나 이상의 제스처 인식기들로 전달되는 탭 제스처(703)(도 7g)에 응답하여, 웹 브라우저 애플리케이션 내의 매칭 제스처 인식기(예로서, 도 7g에서 북마크 아이콘 상에서의 탭 제스처를 인식하는 제스처 인식기)는 터치 스크린(156) 상에 북마크들의 리스트를 표시함으로써 탭 제스처(703)을 처리한다.
일부 실시예들에서, 제1 페이즈에 이어서 터치 입력들의 시퀀스를 검출하는 제2 페이즈 동안, 전자 장치는 (예로서, 도 3d의 이벤트 디스패처 모듈(315)을 이용하여) 하나 이상의 터치 입력들의 제2 부분을 제2 소프트웨어 애플리케이션으로 전달하지 않고 하나 이상의 터치 입력들의 제2 부분을 제1 소프트웨어 애플리케이션으로 전달하고, (예로서, 도 3d의 각각의 매칭 제스처 인식기 내의 이벤트 비교기(3033)를 이용하여) 터치 입력들의 시퀀스를 인식하는 제2 매칭 제스처 인식기를 하나 이상의 매칭 제스처 인식기들로부터 식별하고, 각각의 매칭 제스처 인식기에 대응하는 제스처 핸들러를 이용하여 터치 입력들의 시퀀스를 처리한다(도 8b의 826). 일부 실시예들에서, 터치 입력들의 시퀀스를 검출하는 제2 페이즈는 하나 이상의 터치 입력들의 제2 부분을 검출하는 페이즈다.
예를 들어, 손가락 접촉들(707, 709, 711)을 포함하는 손가락 제스처가 터치 스크린(156)(도 7g) 상에서 검출될 때, 터치 이벤트들이 웹 브라우저 애플리케이션으로 전달되지 않고, 터치 이동 및 리프트 오프 이벤트들이 애플리케이션 런처의 하나 이상의 제스처 인식기들로 전달된다. 전자 장치는 애플리케이션 런처의 매칭 제스처 인식기(예로서, 3 손가락 스와이프-업 제스처 인식기)를 식별하고, 3 손가락 스와이프-업 제스처 인식기에 대응하는 제스처 핸들러를 이용하여 터치 입력들의 시퀀스를 처리한다.
제2 소프트웨어 애플리케이션은 제2 페이즈 동안 하나 이상의 터치 입력들의 제2 부분을 수신하지 못하는데, 이는 통상적으로 (프로그램 계층 구조에서) 제1 소프트웨어 애플리케이션이 제2 소프트웨어 애플리케이션보다 높은 우선 순위를 갖기 때문이다. 따라서, 일부 실시예들에서, 제1 소프트웨어 애플리케이션 내의 제스처 인식기가 하나 이상의 터치 입력들의 제1 부분을 인식할 때, 제1 소프트웨어 애플리케이션 내의 하나 이상의 제스처 인식기들은 하나 이상의 터치 입력들의 제2 후속 부분을 배타적으로 수신한다. 게다가, 제2 소프트웨어 애플리케이션은 제2 페이즈 동안 하나 이상의 터치 입력들의 제2 부분을 수신하지 못할 수 있는데, 이는 제2 소프트웨어 애플리케이션 내의 어떠한 제스처 인식기도 하나 이상의 터치 입력들의 제1 부분과 매칭되지 않기 때문이다.
일부 실시예들에서, 각각의 매칭 제스처 인식기에 대응하는 제스처 핸들러를 이용하여 터치 입력들의 시퀀스를 처리하는 것은 터치 감지 디스플레이의 제1의 사전 정의된 영역에 복수의 동시에 열린 애플리케이션 중 적어도 일부에 대응하는 열린 애플리케이션 아이콘들의 그룹을 표시하고, 적어도 제2 소프트웨어 애플리케이션의 하나 이상의 뷰들의 서브세트를 동시에 표시하는 것을 포함한다(834). 예를 들어, 도 7h에서, 사전 정의된 영역(716) 내의 애플리케이션 아이콘들(5004)은 전자 장치의 동시에 열린 애플리케이션들에 대응한다. 일부 실시예들에서, 사전 정의된 영역(716) 내의 애플리케이션 아이콘들(5004)은 열린 애플리케이션들의 시퀀스에 따라 표시된다. 도 7h에서, 전자 장치는 사전 정의된 영역(716) 및 웹 브라우저 애플리케이션 뷰(712-6)의 서브세트를 동시에 표시한다.
일부 실시예들에서, 각각의 매칭 제스처 인식기에 대응하는 제스처 핸들러를 이용하여 터치 입력들의 시퀀스를 처리하는 것은 제1 소프트웨어 애플리케이션의 하나 이상의 뷰들을 표시하는 것을 포함한다(828). 예를 들어, 다중 손가락 핀치 제스처(도 7r)에 응답하여, 전자 장치는 홈 스크린(708)(도 7a)을 표시한다. 일부 실시예들에서, 제1 소프트웨어 애플리케이션의 하나 이상의 뷰들을 표시하는 것은 임의의 다른 소프트웨어 애플리케이션에 대응하는 뷰를 동시에 표시하지 않고 제1 소프트웨어 애플리케이션의 하나 이상의 뷰들을 표시하는 것을 포함한다(예로서, 도 7a).
일부 실시예들에서, 각각의 매칭 제스처 인식기에 대응하는 제스처 핸들러를 이용하여 터치 입력들의 시퀀스를 처리하는 것은 제2 소프트웨어 애플리케이션의 하나 이상의 뷰들의 표시를 제1 소프트웨어 애플리케이션의 하나 이상의 뷰들의 표시로 대체하는 것(예를 들어, 도 7a의 홈 스크린(708)을 표시하는 것)을 포함한다(830). 따라서, 제1 소프트웨어 애플리케이션의 하나 이상의 뷰들이 표시된 후에 제2 소프트웨어 애플리케이션의 하나 이상의 뷰들의 표시가 중단된다. 일부 실시예들에서, 제2 소프트웨어 애플리케이션의 하나 이상의 뷰들의 표시를 제1 소프트웨어 애플리케이션의 하나 이상의 뷰들의 표시로 대체하는 것은 임의의 다른 소프트웨어 애플리케이션에 대응하는 뷰를 동시에 표시하지 않고 제1 소프트웨어 애플리케이션의 하나 이상의 뷰들을 표시하는 것을 포함한다(도 7a).
일부 실시예들에서, 전자 장치는 제1 소프트웨어 애플리케이션, 제2 소프트웨어 애플리케이션 및 제3 소프트웨어 애플리케이션을 동시에 실행한다(832). 일부 실시예들에서, 각각의 매칭 제스처 인식기에 대응하는 제스처 핸들러를 이용하여 터치 입력들의 시퀀스를 처리하는 것은 제2 소프트웨어 애플리케이션의 하나 이상의 표시된 뷰들을 제3 소프트웨어 애플리케이션의 하나 이상의 뷰들로 대체하는 것을 포함한다. 예를 들어, 다중 손가락 스와이프 제스처에 응답하여, 전자 장치는 웹 브라우저 애플리케이션 뷰(712-6)의 표시를 날씨 애플리케이션 뷰(712-5)의 표시로 대체한다(도 7j-7k). 일부 실시예들에서, 제2 소프트웨어 애플리케이션의 하나 이상의 표시된 뷰들을 제3 소프트웨어 애플리케이션의 하나 이상의 뷰들로 대체하는 것은 임의의 다른 소프트웨어 애플리케이션에 대응하는 뷰를 동시에 표시하지 않고 제3 소프트웨어 애플리케이션의 하나 이상의 뷰들을 표시하는 것을 포함한다. 일부 실시예들에서, 제3 소프트웨어 애플리케이션은 열린 애플리케이션들의 시퀀스에서 제2 소프트웨어 애플리케이션의 다음이다.
일부 실시예들에서, 각각의 매칭 제스처 인식기에 대응하는 제스처 핸들러를 이용하여 터치 입력들의 시퀀스를 처리하는 것은 설정 애플리케이션을 런칭하는 것을 포함한다. 예를 들어, 10 손가락 탭 제스처에 응답하여, 전자 장치는 설정 애플리케이션을 런칭한다.
방법(800)과 관련하여 전술한 프로세스들의 상세들은 후술하는 방법(900)에도 유사한 방식으로 적용될 수 있다는 점에 유의한다. 간소화를 위해, 이러한 상세들은 아래에 반복되지 않는다.
도 9a-9c는 일부 실시예들에 따른 이벤트 인식 방법(900)을 나타내는 흐름도들이다. 방법(900)은 터치 감지 디스플레이를 갖는 전자 장치에서 수행된다(902). 전자 장치는 적어도 제1 소프트웨어 애플리케이션 및 제2 소프트웨어 애플리케이션을 실행하도록 구성된다. 제1 소프트웨어 애플리케이션은 하나 이상의 제스처 인식기들의 제1 세트를 포함하고, 제2 소프트웨어 애플리케이션은 하나 이상의 뷰들 및 하나 이상의 제스처 인식기들의 제2 세트를 포함한다. 각각의 제스처 인식기들은 대응하는 제스처 핸들러들을 갖는다. 일부 실시예들에서, 하나 이상의 제스처 인식기들의 제1 세트는 하나 이상의 제스처 인식기들의 제2 세트와 다르다.
방법(900)은 사용자가 제스처를 이용하여 배경 애플리케이션, 중지된 애플리케이션 또는 동면하는 애플리케이션과 같이 현재 전자 장치의 디스플레이 상에 표시되지 않은 숨겨진 열린 애플리케이션(예로서, 제1 소프트웨어 애플리케이션)을 제어할 수 있게 해준다. 따라서, 사용자는 현재 전자 장치의 디스플레이 상에 표시된 애플리케이션(예로서, 제2 소프트웨어 애플리케이션)에 의해 제공되지 않지만 현재 열린 애플리케이션들 중 하나에 의해 제공되는 동작들을 수행할 수 있다(예를 들어, 숨겨진 애플리케이션 런처 소프트웨어 애플리케이션에 대한 제스처들을 이용하여 홈 스크린을 표시하거나 다음 소프트웨어 애플리케이션으로 스위칭할 수 있다).
일부 실시예들에서, 제1 소프트웨어 애플리케이션은 애플리케이션 런처(예로서, 스프링보드)이다(904). 일부 실시예들에서, 제1 소프트웨어 애플리케이션은 운영 체제 애플리케이션이다(906). 방법(900)에 대한 아래의 설명에서는, 애플리케이션 런처가 예시적인 제1 소프트웨어 애플리케이션으로 사용되고, 웹 브라우저 애플리케이션이 예시적인 제2 소프트웨어 애플리케이션으로 사용된다.
전자 장치는 하나 이상의 뷰들의 제1 세트(예로서, 도 7g의 웹 브라우저 애플리케이션 뷰(712-6))를 표시한다(908). 하나 이상의 뷰들의 제1 세트는 적어도 제2 소프트웨어 애플리케이션의 하나 이상의 뷰들의 서브세트를 포함한다. 예를 들어, 제2 소프트웨어 애플리케이션은 복수의 애플리케이션 뷰(예로서, 도 3d의 애플리케이션(133-1)의 애플리케이션 뷰들(317))를 가질 수 있고, 전자 장치는 복수의 애플리케이션 뷰 중 적어도 하나의 뷰를 표시한다. 일부 실시예들에서, 서브세트는 제2 소프트웨어 애플리케이션의 하나 이상의 뷰들 전체를 포함한다.
일부 실시예들에서, 하나 이상의 뷰들의 제1 세트를 표시하는 것은 제1 소프트웨어 애플리케이션의 어떠한 뷰도 표시하지 않고 하나 이상의 뷰들의 제1 세트(예로서, 도 7g의 웹 브라우저 애플리케이션 뷰(712-6))를 표시하는 것을 포함한다(910).
일부 실시예들에서, 하나 이상의 뷰들의 제1 세트를 표시하는 것은 임의의 다른 소프트웨어 애플리케이션의 뷰를 표시하지 않고 하나 이상의 뷰들의 제1 세트를 표시하는 것을 포함한다(912). 예를 들어, 도 7g에서, 웹 브라우저 애플리케이션의 하나 이상의 뷰들만이 표시된다.
하나 이상의 뷰들의 제1 세트를 표시하는 동안, 전자 장치는 터치 감지 디스플레이 상에서 터치 입력들의 시퀀스를 검출하고(914), 하나 이상의 제스처 인식기들의 제1 세트 내의 적어도 하나의 제스처 인식기가 하나 이상의 터치 입력들의 제1 부분을 인식하는지를 결정한다(920). 예를 들어, 웹 브라우저 애플리케이션 뷰(712-6)(도 7g)를 표시하는 동안, 장치는 애플리케이션 런처에 대한 제스처 인식기들이 터치 입력들의 제1 부분을 인식하는지를 결정한다. 터치 입력들의 시퀀스는 하나 이상의 터치 입력들의 제1 부분 및 제1 부분에 이어지는 하나 이상의 터치 입력들의 제2 부분을 포함한다(즉, 제2 부분은 제1 부분 뒤에 있다).
일부 실시예들에서, 터치 입력들의 시퀀스는 제2 소프트웨어 애플리케이션의 하나 이상의 표시된 뷰들 중 적어도 하나와 적어도 부분적으로 오버랩된다(916). 예를 들어, 애플리케이션 런처가 표시되지 않더라도, 애플리케이션 런처는 웹 브라우저 애플리케이션 뷰(712-6)(도 7g) 상에서 터치 입력들의 제1 부분을 수신한다.
일부 실시예들에서, 하나 이상의 제스처 인식기들의 제1 세트 내의 적어도 하나의 제스처 인식기가 하나 이상의 터치 입력들의 제1 부분을 인식한다는 결정 전에, 전자 장치는 하나 이상의 터치 입력들의 제1 부분을 제1 소프트웨어 애플리케이션 및 제2 소프트웨어 애플리케이션으로 동시에 전달한다(918). 예를 들어, 애플리케이션 런처 및 웹 브라우저 애플리케이션 양자는 애플리케이션 런처 내의 적어도 하나의 제스처 인식기가 손가락 접촉들(707, 709, 711)(도 7g)의 터치 다운 이벤트를 인식한다는 결정 전에 터치 다운 이벤트를 수신한다.
하나 이상의 제스처 인식기들의 제1 세트 내의 적어도 하나의 제스처 인식기가 하나 이상의 터치 입력들의 제1 부분을 인식한다는 결정에 따라(도 9b의 922), 전자 장치는 터치 입력들의 시퀀스를 제2 소프트웨어 애플리케이션으로 전달하지 않고 터치 입력들의 시퀀스를 제1 소프트웨어 애플리케이션으로 전달하고(924), 하나 이상의 제스처 인식기들의 제1 세트 내의 적어도 하나의 제스처 인식기가 터치 입력들의 시퀀스를 인식하는지를 결정하고(926), 하나 이상의 제스처 인식기들의 제1 세트 내의 적어도 하나의 제스처 인식기가 터치 입력들의 시퀀스를 인식한다는 결정에 따라, 터치 입력들의 시퀀스를 인식하는 하나 이상의 제스처 인식기들의 제1 세트 내의 적어도 하나의 제스처 인식기를 이용하여 터치 입력들의 시퀀스를 처리한다(928).
예를 들어, 3 손가락 접촉들(707, 709, 711)의 터치 다운 및 터치 이동이 터치 스크린(156)(도 7g) 상에서 검출될 때, 전자 장치는 애플리케이션 런처의 적어도 3 손가락 스와이프-업 제스처 인식기가 터치 입력들을 인식하는 것으로 식별한다. 이어서, 전자 장치는 후속 터치 이벤트들(예를 들어, 손가락 접촉들(707, 709, 711)의 리프트 오프)을 웹 브라우저 애플리케이션으로 전달하지 않고 후속 터치 이벤트들을 애플리케이션 런처로 전달한다. 전자 장치는 또한 3 손가락 스와이프-업 제스처 인식기가 터치 입력들의 시퀀스를 인식하는 것으로 식별하고, 3 손가락 스와이프-업 제스처 인식기에 대응하는 제스처 핸들러를 이용하여 터치 입력들의 시퀀스를 처리한다.
일부 실시예들에서, 하나 이상의 제스처 인식기들의 제1 세트 내의 적어도 하나의 제스처 인식기를 이용하여 터치 입력들의 시퀀스를 처리하는 것은 제1 소프트웨어 애플리케이션의 하나 이상의 뷰들을 표시하는 것을 포함한다(930). 예를 들어, 다중 손가락 핀치 제스처(도 7r)의 검출에 응답하여, 전자 장치는 홈 스크린(708)(도 7a)을 표시한다.
일부 실시예들에서, 하나 이상의 제스처 인식기들의 제1 세트 내의 적어도 하나의 제스처 인식기를 이용하여 터치 입력들의 시퀀스를 처리하는 것은 하나 이상의 뷰들의 제1 세트의 표시를 제1 소프트웨어 애플리케이션의 하나 이상의 뷰들의 표시로 대체하는 것을 포함한다(932)(예를 들어, 애플리케이션 런처 소프트웨어 애플리케이션의 일부인 도 7a의 홈 스크린(708)을 표시한다).
일부 실시예들에서, 전자 장치는 제1 소프트웨어 애플리케이션, 제2 소프트웨어 애플리케이션 및 제3 소프트웨어 애플리케이션을 동시에 실행하며, 하나 이상의 제스처 인식기들의 제1 세트 내의 적어도 하나의 제스처 인식기를 이용하여 터치 입력들의 시퀀스를 처리하는 것은 하나 이상의 뷰들의 제1 세트를 제3 소프트웨어 애플리케이션의 하나 이상의 뷰들로 대체하는 것을 포함한다(934). 일부 실시예들에서, 하나 이상의 뷰들의 제1 세트를 제3 소프트웨어 애플리케이션의 하나 이상의 뷰들로 대체하는 것은 임의의 다른 소프트웨어 애플리케이션에 대응하는 뷰를 동시에 표시하지 않고 제3 소프트웨어 애플리케이션의 하나 이상의 뷰들을 표시하는 것을 포함한다. 예를 들어, 다중 손가락 스와이프 제스처에 응답하여, 전자 장치는 웹 브라우저 애플리케이션 뷰(712-6)의 표시를 날씨 애플리케이션 뷰(712-5)의 표시로 대체한다(도 7j-7k).
일부 실시예들에서, 하나 이상의 제스처 인식기들의 제1 세트 내의 적어도 하나의 제스처 인식기를 이용하여 터치 입력들의 시퀀스를 처리하는 것은 터치 감지 디스플레이의 제1의 사전 정의된 영역에 복수의 동시에 열린 애플리케이션 중 적어도 일부에 대응하는 열린 애플리케이션 아이콘들의 그룹을 표시하고, 적어도 하나 이상의 뷰들의 제1 세트의 서브세트를 동시에 표시하는 것을 포함한다(936). 예를 들어, 도 7h에서, 사전 정의된 영역(716) 내의 애플리케이션 아이콘들(5004)은 전자 장치의 동시에 열린 애플리케이션들에 대응한다. 일부 실시예들에서, 사전 정의된 영역(716) 내의 애플리케이션 아이콘들(5004)은 열린 애플리케이션들의 시퀀스에 따라 표시된다. 도 7h에서, 전자 장치는 사전 정의된 영역(716) 및 웹 브라우저 애플리케이션 뷰(712-6)의 서브세트를 동시에 표시한다.
하나 이상의 제스처 인식기들의 제1 세트 내의 어떠한 제스처 인식기도 하나 이상의 터치 입력들의 제1 부분을 인식하지 않는다는 결정에 따라(도 9c의 938), 전자 장치는 터치 입력들의 시퀀스를 제2 소프트웨어 애플리케이션으로 전달하고(940), 하나 이상의 제스처 인식기들의 제2 세트 내의 적어도 하나의 제스처 인식기가 터치 입력들의 시퀀스를 인식하는지를 결정하고(942), 하나 이상의 제스처 인식기들의 제2 세트 내의 적어도 하나의 제스처 인식기가 터치 입력들의 시퀀스를 인식한다는 결정에 따라, 터치 입력들의 시퀀스를 인식하는 하나 이상의 제스처 인식기들의 제2 세트 내의 적어도 하나의 제스처 인식기를 이용하여 터치 입력들의 시퀀스를 처리한다(944).
예를 들어, 하나 이상의 터치 입력들의 제1 부분이 탭 제스처(예로서, 도 7g의 703)이고, 애플리케이션 런처 내의 어떠한 제스처 인식기도 탭 제스처를 인식하지 않을 때, 전자 장치는 탭 제스처를 웹 브라우저 애플리케이션으로 전달하고, 웹 브라우저 애플리케이션의 적어도 하나의 제스처 인식기가 탭 제스처를 인식하는지를 결정한다. 웹 브라우저 애플리케이션(또는 웹 브라우저 애플리케이션의 제스처 인식기)이 북마크 아이콘 상에서의 탭 제스처(703)를 인식할 때, 전자 장치는 대응하는 제스처 핸들러를 이용하여 탭 제스처(703)를 처리한다.
도 10a-10b는 일부 실시예들에 따른 이벤트 인식 방법을 나타내는 흐름도들이다. 방법들(600, 800, 900)과 관련하여 전술한 프로세스들에 대한 상세들은 후술하는 방법(1000)에도 유사한 방식으로 적용될 수 있다는 점에 유의한다. 간소화를 위해, 이러한 상세들은 아래에 반복되지 않는다.
방법(1000)은 내부 상태(예로서, 도 1c의 장치/전역 내부 상태(134))를 갖는 전자 장치에서 수행된다(1002). 전자 장치는 복수의 뷰를 갖는 뷰 계층 구조를 포함하는 소프트웨어를 실행하도록 구성된다.
방법(1000)에서, 적어도 하나의 제스처 인식기는 복수의 제스처 정의를 갖는다. 이것은 제스처 인식기가 상이한 별개의 동작 모드들에서 동작하는 것을 돕는다. 예를 들어, 장치는 정상 동작 모드 및 액세스 가능성 동작 모드를 가질 수 있다. 정상 동작 모드에서는, 다음 애플리케이션 제스처가 애플리케이션들 사이에서 이동하는 데 사용되고, 다음 애플리케이션 제스처는 3 손가락 좌측 스와이프 제스처로서 정의된다. 액세스 가능성 동작 모드에서, 3 손가락 좌측 스와이프 제스처는 상이한 기능을 수행하는 데 사용된다. 따라서, 다음 애플리케이션 제스처에 대응하기 위해 3 손가락 좌측 스와이프와 다른 제스처(예로서, 액세스 가능성 동작 모드에서 4 손가락 좌측 스와이프 제스처)가 필요하다. 다음 애플리케이션 제스처와 관련된 다수의 제스처 정의를 가짐으로써, 장치는 현재의 동작 모드에 따라 다음 애플리케이션 제스처에 대한 제스처 정의들 중 하나를 선택할 수 있다. 이것은 상이한 동작 모드들에서 제스처 인식기를 사용하는 데 있어서의 유연성을 제공한다. 일부 실시예들에서는, 복수의 제스처 정의를 갖는 복수의 제스처 인식기가 동작 모드에 따라 조정된다(예를 들어, 정상 동작 모드에서 3개의 손가락을 이용하여 수행되는 제스처들은 액세스 가능성 동작 모드에서는 4개의 손가락을 이용하여 수행된다).
일부 실시예들에서, 내부 상태는 액세스 가능성 동작 모드에 대한 하나 이상의 설정들을 포함한다(1016)(예를 들어, 내부 상태는 장치가 액세스 가능성 동작 모드에서 동작하고 있는지를 지시한다).
일부 실시예들에서, 소프트웨어는 애플리케이션 런처(예로서, 스프링보드)이거나 이를 포함한다(1018).
일부 실시예들에서, 소프트웨어는 운영 체제 애플리케이션(예로서, 장치의 운영 체제와 통합된 애플리케이션)이거나 이를 포함한다(1020).
전자 장치는 뷰 계층 구조의 하나 이상의 뷰들을 표시한다(1004).
전자 장치는 하나 이상의 소프트웨어 요소들을 실행한다(1006). 각각의 소프트웨어 요소는 특정 뷰와 관련되며(예를 들어, 애플리케이션(133-1)은 도 3d의 하나 이상의 애플리케이션 뷰들(317)을 가짐), 각각의 특정 뷰는 하나 이상의 이벤트 인식기들(예로서, 도 3d의 이벤트 인식기들(325))을 포함한다. 각각의 이벤트 인식기는 하나 이상의 서브이벤트들에 기초하는 하나 이상의 이벤트 정의들, 및 이벤트 핸들러(예를 들어, 도 3d의 제스처 정의들(3035), 및 이벤트 전달 정보(3039) 내의 대응 이벤트 핸들러에 대한 참조)를 갖는다. 이벤트 핸들러는 타겟에 대한 액션을 지정하며, 이벤트 인식기가 하나 이상의 이벤트 정의들 중 특정 이벤트 정의(예를 들어, 이벤트 인식기가 다수의 이벤트 정의를 가질 때 하나 이상의 이벤트 정의들로부터 선택된 이벤트 정의 또는 이벤트 인식기가 하나의 이벤트 정의만을 가질 때 유일한 이벤트 정의)에 대응하는 이벤트를 검출하는 것에 응답하여 액션을 타겟으로 전송하도록 구성된다.
전자 장치는 하나 이상의 서브이벤트들의 시퀀스를 검출한다(1008).
전자 장치는 뷰 계층구조의 뷰들 중 하나를 히트 뷰로서 식별한다(1010). 히트 뷰는 뷰 계층 구조 내의 어떤 뷰들이 활성적으로 관련된 뷰들인지를 설정한다.
전자 장치는 각각의 서브이벤트를 뷰 계층 구조 내의 각각의 활성적으로 관련된 뷰에 대한 이벤트 인식기들로 전달한다(1012). 일부 실시예들에서, 뷰 계층 구조 내의 하나 이상의 활성적으로 관련된 뷰들은 히트 뷰를 포함한다. 일부 실시예들에서, 뷰 계층 구조 내의 하나 이상의 활성적으로 관련된 뷰들은 디폴트 뷰(예로서, 애플리케이션 런처의 홈 스크린(708)을 포함한다.
뷰 계층 구조 내의 활성적으로 관련된 뷰들에 대한 적어도 하나의 이벤트 인식기는 복수의 이벤트 정의를 갖고, 이들 중 하나는 전자 장치의 내부 상태에 따라 선택된다(1014). 예를 들어, 이벤트 인식기(325-1)는 복수의 제스처 정의(예로서, 도 3d의 3037-1, 3037-2)를 갖는다. 일부 실시예들에서, 이벤트 인식기(325-1)는 장치/전역 내부 상태(134)(도 1c) 내의 하나 이상의 값들에 기초하여 이벤트 인식기(325-1) 내의 복수의 제스처 정의 중 하나를 선택한다. 이어서, 적어도 하나의 이벤트 인식기는 선택된 이벤트 정의에 따라 서브이벤트들의 시퀀스 내의 다음 서브이벤트를 처리하기 전에 각각의 서브이벤트를 처리한다. 일부 실시예들에서, 뷰 계층 구조 내의 활성적으로 관련된 뷰들에 대한 둘 이상의 이벤트 인식기들 각각은 복수의 이벤트 정의를 가지며, 이들 중 하나는 전자 장치의 내부 상태에 따라 선택된다. 그러한 실시예들에서, 둘 이상의 이벤트 인식기들 중 적어도 하나는 선택된 이벤트 정의에 따라 서브이벤트들의 시퀀스 내의 다음 서브이벤트를 처리하기 전에 각각의 서브이벤트를 처리한다.
예를 들어, 도 7j-7k는 다음 애플리케이션의 애플리케이션 뷰의 표시를 개시하는 다음 애플리케이션 제스처를 나타낸다. 일부 실시예들에서, 애플리케이션 런처는 3 손가락 좌측 스와이프 제스처와 매칭되는 제스처 정의를 포함하는 다음 애플리케이션 제스처 인식기를 포함한다. 이 예의 목적을 위해, 다음 애플리케이션 제스처 인식기는 4 손가락 좌측 스와이프 제스처에 대응하는 제스처 정의도 포함하는 것으로 가정한다. 장치/전역 내부 상태(134) 내의 하나 이상의 값들이 디폴트 값(들)으로 설정될 때, 다음 애플리케이션 제스처 인식기는 3 손가락 좌측 스와이프 제스처 정의를 이용하며, 4 손가락 좌측 스와이프 제스처 정의를 이용하지 않는다. 장치/전역 내부 상태(134) 내의 하나 이상의 값들이 (예로서, 도 1c의 액세스 가능성 모듈(127)을 이용하여) 변경될 때, 다음 애플리케이션 제스처 인식기는 4 손가락 좌측 스와이프 제스처 정의를 이용하며, 3 손가락 좌측 스와이프 제스처 정의를 이용하지 않는다. 따라서, 이 예에서, 장치/전역 내부 상태(134) 내의 하나 이상의 값들이 변경될 때, 4 손가락 좌측 스와이프 제스처는 다음 애플리케이션의 애플리케이션 뷰의 표시를 개시한다.
유사하게, 도 7r-7s는 홈 스크린 제스처가 5 손가락 핀치 제스처의 검출에 응답하여 축소된 스케일에서의 웹 브라우저 애플리케이션 뷰(712-6)의 표시 및 홈 스크린(708)의 적어도 일부의 표시를 개시하는 것을 나타낸다. 장치/전역 내부 상태(134) 및 홈 스크린 제스처 인식기 내의 제스처 정의들에 기초하여, 4 손가락 핀치 제스처, 3 손가락 핀치 제스처 또는 임의의 다른 적절한 제스처를 이용하여, 축소된 스케일에서의 웹 브라우저 애플리케이션 뷰(712-6)의 표시 및 홈 스크린(708)의 적어도 일부의 표시를 개시할 수 있다.
일부 실시예들에서, 복수의 이벤트 정의는 제1 수의 손가락을 이용하는 제1 스와이프 제스처에 대응하는 제1 이벤트 정의 및 제1 수의 손가락과 다른 제2 수의 손가락을 이용하는 제2 스와이프 제스처에 대응하는 제2 이벤트 정의를 포함한다(1020). 예를 들어, 각각의 제스처 인식기에 대한 복수의 이벤트 정의는 3 손가락 스와이프 제스처 및 4 손가락 스와이프 제스처를 포함할 수 있다.
일부 실시예들에서, 복수의 이벤트 정의는 제1 수의 손가락을 이용하는 제1 종류의 제1 제스처에 대응하는 제1 이벤트 정의 및 제1 수의 손가락과 다른 제2 수의 손가락을 이용하는 제1 종류의 제2 제스처에 대응하는 제2 이벤트 정의(예로서, 1 손가락 탭 제스처 및 2 손가락 탭 제스처, 2 손가락 핀치 제스처 및 3 손가락 핀치 제스처 등)를 포함한다.
일부 실시예들에서, 복수의 이벤트 정의는 제1 제스처에 대응하는 제1 이벤트 정의 및 제1 제스처와 다른 제2 제스처에 대응하는 제2 이벤트 정의(예로서, 스와이프 제스처 및 핀치 제스처, 스와이프 제스처 및 탭 제스처 등)를 포함한다.
일부 실시예들에서, 복수의 이벤트 정의의 각각의 정의가 전자 장치의 내부 상태 및 각각의 이벤트 정의가 각각의 이벤트 인식기와 다른 활성적으로 관련된 뷰들에 대한 임의의 이벤트 인식기의 이벤트 정의에 대응하지 않는다는 (전자 장치에 의한) 결정에 따라 각각의 이벤트 인식기에 대해 선택된다(1022).
예를 들어, 각각의 제스처 인식기는 2개의 이벤트 정의, 즉 정상 동작 모드에 대해 통상적으로 사용되는 3 손가락 좌측 스와이프 제스처에 대응하는 제1 이벤트 정의 및 액세스 가능성 동작 모드에 대해 통상적으로 사용되는 4 손가락 좌측 스와이프 제스처에 대응하는 제2 이벤트 정의를 가질 수 있다. 전자 장치의 내부 상태가 전자 장치가 액세스 가능성 모드에서 동작하게 하는 방식으로 설정될 때, 전자 장치는 제2 이벤트 정의에 대한 4 손가락 좌측 스와이프 제스처가 활성적으로 관련된 뷰들에 대한 임의의 다른 이벤트 인식기에 의해 사용되는지를 결정한다. 4 손가락 좌측 스와이프 제스처가 활성적으로 관련된 뷰들에 대한 임의의 다른 이벤트 인식기에 의해 사용되지 않는 경우, 4 손가락 좌측 스와이프 제스처는 액세스 가능성 동작 모드에서 각각의 제스처 인식기에 대해 선택된다. 한편, 4 손가락 좌측 스와이프 제스처가 활성적으로 관련된 뷰들에 대한 임의의 다른 이벤트 인식기에 의해 사용되는 경우, 3 손가락 좌측 스와이프 제스처가 액세스 가능성 동작 모드에서도 각각의 제스처 인식기에 대해 사용된다. 이것은 둘 이상의 제스처 인식기가 바람직하지 않게 동일 제스처에 응답하는 것을 방지한다.
일부 실시예들에서, 복수의 이벤트 정의의 각각의 정의는 전자 장치의 내부 상태 및 각각의 이벤트 정의가 각각의 이벤트 인식기와 다른 (활성적으로 관련된 뷰들 및 임의의 다른 뷰들에 대한 이벤트 인식기들을 포함하는) 임의의 이벤트 인식기의 이벤트 정의에 대응하지 않는다는 (전자 장치에 의한) 결정에 따라 각각의 이벤트 인식기에 대해 선택된다.
일부 실시예들에서, 뷰 계층 구조 내의 활성적으로 관련된 뷰들에 대한 둘 이상의 이벤트 인식기 각각은 각각의 복수의 이벤트 정의를 갖고, 각각의 복수의 이벤트 정의의 각각의 이벤트 정의는 전자 장치의 내부 상태 및 각각의 이벤트 정의가 각각의 이벤트 인식기와 다른 둘 이상의 이벤트 정의를 갖는 임의의 이벤트 인식기에 대해 선택된 임의의 이벤트 정의에 대응하지 않는다는 (전자 장치에 의한) 결정에 따라 각각의 이벤트 인식기에 대해 선택된다(1024).
예를 들어, 활성적으로 관련된 뷰들은 제1 제스처 인식기 및 제2 제스처 인식기를 가질 수 있다. 이 예에서, 제1 제스처 인식기는 정상 동작 모드에 대해 통상적으로 사용되는 3 손가락 좌측 스와이프 제스처에 대응하는 제1 이벤트 정의 및 액세스 가능성 동작 모드에 대해 통상적으로 사용되는 4 손가락 좌측 스와이프 제스처에 대응하는 제2 이벤트 정의를 갖는다. 제2 제스처 인식기는 정상 동작 모드에 대해 통상적으로 사용되는 2 손가락 좌측 스와이프 제스처에 대응하는 제3 이벤트 정의 및 액세스 가능성 동작 모드에 대해 통상적으로 사용되는 4 손가락 좌측 스와이프 제스처에 대응하는 제4 이벤트 정의를 갖는다. 전자 장치의 내부 상태가 전자 장치가 액세스 가능성 모드에서 동작하게 하는 방식으로 설정될 때, 전자 장치는 제2 이벤트 정의를 충족시키는 4 손가락 좌측 스와이프 제스처가 둘 이상의 이벤트 정의를 갖는 임의의 다른 이벤트 인식기(예로서, 제2 이벤트 제스처 인식기)에 대해 선택되는지를 결정한다. 4 손가락 좌측 스와이프 제스처가 둘 이상의 이벤트 정의를 갖는 임의의 다른 이벤트 인식기에 대해 선택되지 않는 경우, 4 손가락 좌측 스와이프 제스처는 액세스 가능성 동작 모드에서 제1 제스처 인식기에 대해 선택된다. 결과적으로, 4 손가락 좌측 스와이프 제스처는 제2 제스처 인식기에 대해 선택되지 않는데, 이는 4 손가락 좌측 스와이프 제스처가 이미 제1 제스처 인식기에 대해 선택되었기 때문이다. 대신에, 2 손가락 좌측 스와이프 제스처가 제2 제스처 인식기에 대해 선택되는데, 이는 2 손가락 좌측 스와이프 제스처가 제1 제스처 인식기를 포함하는 둘 이상의 이벤트 정의를 갖는 임의의 다른 제스처 인식기에 대해 선택되지 않았기 때문이다. 다른 예에서, 활성적으로 관련된 뷰들은 제2 제스처 인식기 없이 제1 제스처 인식기 및 제3 제스처 인식기를 갖는다. 제3 제스처 인식기는 정상 동작 모드에 대해 통상적으로 사용되는 (2 손가락 좌측 스와이프 제스처에 대응하는) 제3 이벤트 정의 및 액세스 가능성 동작 모드에 대해 통상적으로 사용되는 3 손가락 좌측 스와이프 제스처에 대응하는 제5 이벤트 정의를 갖는다. 액세스 가능성 동작 모드에서, 3 손가락 좌측 스와이프 제스처는 제3 제스처 인식기에 대해 선택될 수 있는데, 이는 3 손가락 좌측 스와이프 제스처가 둘 이상의 이벤트 정의를 갖는 임의의 다른 제스처 인식기에 대해 선택되지 않았기 때문이다.
위의 예들은 다중 손가락 좌측 스와이프 제스처들과 관련하여 설명되었지만, 전술한 방법들은 임의의 방향의 스와이프 제스처들(예로서, 우측 스와이프 제스처, 스와이프-업 제스처, 스와이프-다운 제스처 및/또는 임의의 대각선 스와이프 제스처) 또는 임의의 다른 종류의 제스처들(예로서, 탭 제스처, 핀치 제스처, 디핀치 제스처 등)에 적용된다.
일부 실시예들에서, 선택된 이벤트 정의에 따라 각각의 서브이벤트를 처리하는 것은 뷰 계층 구조를 포함하는 소프트웨어와 다른 제1 소프트웨어 애플리케이션의 하나 이상의 뷰들을 표시하는 것(예를 들어, 도 7s에서 소프트웨어의 하나 이상의 뷰들을 포함하는 사용자 인터페이스(712-6)의 적어도 일부 및 홈 스크린(708)의 일부를 동시에 표시하는 것)을 포함한다(1026).
일부 실시예들에서, 적어도 하나의 이벤트 인식기는 뷰 계층 구조의 하나 이상의 뷰들의 표시를 뷰 계층 구조를 포함하는 소프트웨어와 다른 제1 소프트웨어 애플리케이션의 하나 이상의 뷰들(예를 들어, 도 7a의 홈 스크린(708))의 표시로 대체함으로써 각각의 서브이벤트를 처리한다(1028).
일부 실시예들에서, 적어도 하나의 이벤트 인식기는 전자 장치 내의 디스플레이의 제1의 사전 정의된 영역에 복수의 동시에 열린 애플리케이션 중 적어도 일부에 대응하는 열린 애플리케이션 아이콘들의 그룹을 표시하고, 적어도 뷰 계층 구조의 하나 이상의 뷰들의 서브세트(예로서, 도 7h의 열린 애플리케이션 아이콘들(5004) 및 사용자 인터페이스(712-6)의 적어도 일부)를 동시에 표시함으로써 각각의 서브이벤트를 처리한다(1030). 예를 들어, 전자 장치는 정상 동작 모드에서의 3 손가락 스와이프-업 제스처 및 액세스 가능성 동작 모드에서의 4 손가락 스와이프-업 제스처에 응답하여 열린 애플리케이션 아이콘들의 그룹 및 적어도 뷰 계층 구조의 하나 이상의 뷰들의 서브세트를 동시에 표시한다.
일부 실시예들에 따르면, 도 11은 전술한 바와 같은 본 발명의 원리들에 따라 구성되는 전자 장치(1100)의 기능 블록도를 나타낸다. 장치의 기능 블록들은 본 발명의 원리들을 실행하도록 하드웨어, 소프트웨어 또는 하드웨어와 소프트웨어의 조합에 의해 구현될 수 있다. 도 11에서 설명되는 기능 블록들은 전술한 바와 같은 본 발명의 원리들을 구현하기 위해 결합되거나 서브블록들로 분리될 수 있다는 것을 이 분야의 기술자들은 이해한다. 따라서, 본 명세서에서의 설명은 본 명세서에서 설명되는 기능 블록들의 임의의 가능한 결합 또는 분리 또는 추가적인 정의를 지원할 수 있다.
도 11에 도시된 바와 같이, 전자 장치(1100)는 터치 입력들을 수신하도록 구성되는 터치 감지 디스플레이 유닛(1102); 및 터치 감지 디스플레이 유닛(1102)에 결합되는 처리 유닛(1106)을 포함한다. 일부 실시예들에서, 처리 유닛(1106)은 실행 유닛(1108), 디스플레이 인에이블링 유닛(1110), 검출 유닛(1112), 전달 유닛(1114), 식별 유닛(1116) 및 터치 입력 처리 유닛(1118)을 포함한다.
처리 유닛(1106)은 (예를 들어, 실행 유닛(1108)을 이용하여) 적어도 제1 소프트웨어 애플리케이션 및 제2 소프트웨어 애플리케이션을 실행하도록 구성된다. 제1 소프트웨어 애플리케이션은 하나 이상의 제스처 인식기들의 제1 세트를 포함하고, 제2 소프트웨어 애플리케이션은 하나 이상의 뷰들 및 하나 이상의 제스처 인식기들의 제2 세트를 포함한다. 각각의 제스처 인식기들은 대응하는 제스처 핸들러들을 갖는다. 처리 유닛(1106)은 (예를 들어, 터치 감지 디스플레이 유닛(1102) 상에서, 디스플레이 인에이블링 유닛(1110)을 이용하여) 적어도 제2 소프트웨어 애플리케이션의 하나 이상의 뷰들의 서브세트의 표시를 가능하게 하도록 구성된다. 처리 유닛(1106)은 적어도 제2 소프트웨어 애플리케이션의 하나 이상의 뷰들의 서브세트를 표시하는 동안에 (예를 들어, 검출 유닛(1112)을 이용하여) 터치 감지 디스플레이 유닛(1102) 상에서 터치 입력들의 시퀀스를 검출하도록 구성된다. 터치 입력들의 시퀀스는 하나 이상의 터치 입력들의 제1 부분 및 제1 부분에 이어지는 하나 이상의 터치 입력들의 제2 부분을 포함한다. 처리 유닛(1106)은 터치 입력들의 시퀀스를 검출하는 제1 페이즈 동안: (예를 들어, 전달 유닛(1114)을 이용하여) 하나 이상의 터치 입력들의 제1 부분을 제1 소프트웨어 애플리케이션 및 제2 소프트웨어 애플리케이션으로 전달하고; (예를 들어, 식별 유닛(1116)을 이용하여) 하나 이상의 터치 입력들의 제1 부분을 인식하는 하나 이상의 매칭 제스처 인식기들을 제1 세트 내의 제스처 인식기들로부터 식별하고; (예를 들어, 터치 입력 처리 유닛(1118)을 이용하여) 하나 이상의 매칭 제스처 인식기들에 대응하는 하나 이상의 제스처 핸들러들을 이용하여 하나 이상의 터치 입력들의 제1 부분을 처리하도록 구성된다.
일부 실시예들에서, 처리 유닛(1106)은 하나 이상의 터치 입력들의 제1 부분 내의 터치 입력들이 제2 소프트웨어 애플리케이션의 표시된 뷰들 중 적어도 하나와 적어도 부분적으로 오버랩되는 동안에 (예로서, 검출 유닛(1112)을 이용하여) 터치 입력들의 시퀀스를 검출하도록 구성된다.
일부 실시예들에서, 처리 유닛(1106)은 (예를 들어, 터치 감지 디스플레이 유닛(1102) 상에서, 디스플레이 인에이블링 유닛(1110)을 이용하여) 제1 소프트웨어 애플리케이션의 어떠한 뷰도 표시하지 않고 적어도 제2 소프트웨어 애플리케이션의 하나 이상의 뷰들의 서브세트의 표시를 가능하게 하도록 구성된다.
일부 실시예들에서, 처리 유닛(1106)은 (예를 들어, 터치 감지 디스플레이 유닛(1102) 상에서, 디스플레이 인에이블링 유닛(1110)을 이용하여) 임의의 다른 애플리케이션의 뷰를 표시하지 않고 적어도 제2 소프트웨어 애플리케이션의 하나 이상의 뷰들의 서브세트의 표시를 가능하게 하도록 구성된다.
일부 실시예들에서, 처리 유닛(1106)은 제1 페이즈에 이어서 터치 입력들의 시퀀스를 검출하는 제2 페이즈 동안: (예를 들어, 전달 유닛(1114)을 이용하여) 하나 이상의 터치 입력들의 제2 부분을 제2 소프트웨어 애플리케이션으로 전달하지 않고 하나 이상의 터치 입력들의 제2 부분을 제1 소프트웨어 애플리케이션으로 전달하고; (예를 들어, 식별 유닛(1116)을 이용하여) 터치 입력들의 시퀀스를 인식하는 제2 매칭 제스처 인식기를 하나 이상의 매칭 제스처 인식기들로부터 식별하고; (예를 들어, 터치 입력 처리 유닛(1118)을 이용하여) 각각의 매칭 제스처 인식기에 대응하는 제스처 핸들러를 이용하여 터치 입력들의 시퀀스를 처리하도록 구성된다.
일부 실시예들에서, 처리 유닛(1106)은 (예를 들어, 터치 감지 디스플레이 유닛(1102) 상에서, 디스플레이 인에이블링 유닛(1110)을 이용하여) 제1 소프트웨어 애플리케이션의 하나 이상의 뷰들의 표시를 가능하게 함으로써 각각의 매칭 제스처 인식기에 대응하는 제스처 핸들러를 이용하여 터치 입력들의 시퀀스를 처리하도록 구성된다.
일부 실시예들에서, 처리 유닛(1106)은 (예를 들어, 터치 감지 디스플레이 유닛(1102) 상에서, 디스플레이 인에이블링 유닛(1110)을 이용하여) 제2 소프트웨어 애플리케이션의 하나 이상의 뷰들의 표시를 제1 소프트웨어 애플리케이션의 하나 이상의 뷰들의 표시로 대체함으로써 각각의 매칭 제스처 인식기에 대응하는 제스처 핸들러를 이용하여 터치 입력들의 시퀀스를 처리하도록 구성된다.
일부 실시예들에서, 처리 유닛(1106)은 (예를 들어, 실행 유닛(1108)을 이용하여) 제1 소프트웨어 애플리케이션, 제2 소프트웨어 애플리케이션 및 제3 소프트웨어 애플리케이션을 동시에 실행하고; (예를 들어, 터치 감지 디스플레이 유닛(1102) 상에서, 디스플레이 인에이블링 유닛(1110)을 이용하여) 제2 소프트웨어 애플리케이션의 하나 이상의 표시된 뷰들을 제3 소프트웨어 애플리케이션의 하나 이상의 뷰들로 대체함으로써 각각의 매칭 제스처 인식기에 대응하는 제스처 핸들러를 이용하여 터치 입력들의 시퀀스를 처리하도록 구성된다.
일부 실시예들에서, 처리 유닛(1106)은 (예를 들어, 디스플레이 인에이블링 유닛(1110)을 이용하여) 복수의 동시에 열린 애플리케이션 중 적어도 일부에 대응하는 열린 애플리케이션 아이콘들의 그룹을 터치 감지 디스플레이 유닛(1102)의 제1의 사전 정의된 영역 내에 표시하는 것을 가능하게 하고; (예를 들어, 디스플레이 인에이블링 유닛(1110)을 이용하여) 적어도 제2 소프트웨어 애플리케이션의 하나 이상의 뷰들의 서브세트의 동시 표시를 가능하게 하도록 구성된다.
일부 실시예들에서, 제1 소프트웨어 애플리케이션은 애플리케이션 런처이다.
일부 실시예들에서, 제1 소프트웨어 애플리케이션은 운영 체제 애플리케이션이다.
일부 실시예들에 따르면, 도 12는 전술한 바와 같은 본 발명의 원리들에 따라 구성되는 전자 장치(1200)의 기능 블록도를 나타낸다. 장치의 기능 블록들은 본 발명의 원리들을 실행하도록 하드웨어, 소프트웨어 또는 하드웨어와 소프트웨어의 조합에 의해 구현될 수 있다. 도 12에서 설명되는 기능 블록들은 전술한 바와 같은 본 발명의 원리들을 구현하기 위해 결합되거나 서브블록들로 분리될 수 있다는 것을 이 분야의 기술자들은 이해한다. 따라서, 본 명세서에서의 설명은 본 명세서에서 설명되는 기능 블록들의 임의의 가능한 결합 또는 분리 또는 추가적인 정의를 지원할 수 있다.
도 12에 도시된 바와 같이, 전자 장치(1200)는 터치 입력들을 수신하도록 구성되는 터치 감지 디스플레이 유닛(1202); 및 터치 감지 디스플레이 유닛(1202)에 결합되는 처리 유닛(1206)을 포함한다. 일부 실시예들에서, 처리 유닛(1206)은 실행 유닛(1208), 디스플레이 인에이블링 유닛(1210), 검출 유닛(1212), 결정 유닛(1214), 전달 유닛(1216) 및 터치 입력 처리 유닛(1218)을 포함한다.
처리 유닛(1206)은 (예를 들어, 실행 유닛(1208)을 이용하여) 적어도 제1 소프트웨어 애플리케이션 및 제2 소프트웨어 애플리케이션을 실행하도록 구성된다. 제1 소프트웨어 애플리케이션은 하나 이상의 제스처 인식기들의 제1 세트를 포함하고, 제2 소프트웨어 애플리케이션은 하나 이상의 뷰들 및 하나 이상의 제스처 인식기들의 제2 세트를 포함한다. 각각의 제스처 인식기들은 대응하는 제스처 핸들러들을 갖는다. 처리 유닛(1206)은 (예를 들어, 디스플레이 인에이블링 유닛(1210)을 이용하여) 하나 이상의 뷰들의 제1 세트의 표시를 가능하게 하도록 구성된다. 하나 이상의 뷰들의 제1 세트는 적어도 제2 소프트웨어 애플리케이션의 하나 이상의 뷰들의 서브세트를 포함한다. 처리 유닛(1206)은 하나 이상의 뷰들의 제1 세트를 표시하는 동안에 (예를 들어, 검출 유닛(1212)을 이용하여) 터치 감지 디스플레이 유닛 상에서 터치 입력들의 시퀀스를 검출하도록 구성된다. 터치 입력들의 시퀀스는 하나 이상의 터치 입력들의 제1 부분 및 제1 부분에 이어지는 하나 이상의 터치 입력들의 제2 부분을 포함한다. 처리 유닛(1206)은 (예를 들어, 결정 유닛(1214)을 이용하여) 하나 이상의 제스처 인식기들의 제1 세트 내의 적어도 하나의 제스처 인식기가 하나 이상의 터치 입력들의 제1 부분을 인식하는지를 결정하도록 구성된다. 처리 유닛(1206)은 하나 이상의 제스처 인식기들의 제1 세트 내의 적어도 하나의 제스처 인식기가 하나 이상의 터치 입력들의 제1 부분을 인식한다는 결정에 따라: (예를 들어, 전달 유닛(1216)을 이용하여) 터치 입력들의 시퀀스를 제2 소프트웨어 애플리케이션으로 전달하지 않고 터치 입력들의 시퀀스를 제1 소프트웨어 애플리케이션으로 전달하고; (예로서, 결정 유닛(1214)을 이용하여) 하나 이상의 제스처 인식기들의 제1 세트 내의 적어도 하나의 제스처 인식기가 터치 입력들의 시퀀스를 인식하는지를 결정한다. 처리 유닛(1206)은 하나 이상의 제스처 인식기들의 제1 세트 내의 적어도 하나의 제스처 인식기가 터치 입력들의 시퀀스를 인식한다는 결정에 따라, (예를 들어, 터치 입력 처리 유닛(1218)을 이용하여) 터치 입력들의 시퀀스를 인식하는 하나 이상의 제스처 인식기들의 제1 세트 내의 적어도 하나의 제스처 인식기를 이용하여 터치 입력들의 시퀀스를 처리하도록 구성된다. 처리 유닛(1206)은 하나 이상의 제스처 인식기들의 제1 세트 내의 어떠한 제스처 인식기도 하나 이상의 터치 입력들의 제1 부분을 인식하지 않는다는 결정에 따라: (예로서, 전달 유닛(1216)을 이용하여) 터치 입력들의 시퀀스를 제2 소프트웨어 애플리케이션으로 전달하고; (예를 들어, 결정 유닛(1214)을 이용하여) 하나 이상의 제스처 인식기들의 제2 세트 내의 적어도 하나의 제스처 인식기가 터치 입력들의 시퀀스를 인식하는지를 결정하도록 구성된다. 처리 유닛(1206)은 하나 이상의 제스처 인식기들의 제2 세트 내의 적어도 하나의 제스처 인식기가 터치 입력들의 시퀀스를 인식한다는 결정에 따라, (예로서, 터치 입력 처리 유닛(1218)을 이용하여) 터치 입력들의 시퀀스를 인식하는 하나 이상의 제스처 인식기들의 제2 세트 내의 적어도 하나의 제스처 인식기를 이용하여 터치 입력들의 시퀀스를 처리하도록 구성된다.
일부 실시예들에서, 터치 입력들의 시퀀스는 제2 소프트웨어 애플리케이션의 하나 이상의 표시된 뷰들 중 적어도 하나와 적어도 부분적으로 오버랩된다.
일부 실시예들에서, 처리 유닛(1206)은 (예로서, 터치 감지 디스플레이 유닛(1202) 상에서, 디스플레이 인에이블링 유닛(1210)을 이용하여) 제1 소프트웨어 애플리케이션의 어떠한 뷰도 표시하지 않고 하나 이상의 뷰들의 제1 세트의 표시를 가능하게 하도록 구성된다.
일부 실시예들에서, 처리 유닛(1206)은 (예로서, 터치 감지 디스플레이 유닛(1202) 상에서, 디스플레이 인에이블링 유닛(1210)을 이용하여) 임의의 다른 소프트웨어 애플리케이션의 뷰를 표시하지 않고 하나 이상의 뷰들의 제1 세트의 표시를 가능하게 하도록 구성된다.
일부 실시예들에서, 하나 이상의 제스처 인식기들의 제1 세트 내의 적어도 하나의 제스처 인식기가 하나 이상의 터치 입력들의 제1 부분을 인식한다는 결정 전에, 처리 유닛(1206)은 (예를 들어, 전달 유닛(1216)을 이용하여) 하나 이상의 터치 입력들의 제1 부분을 제1 소프트웨어 애플리케이션 및 제2 소프트웨어 애플리케이션으로 동시에 전달하도록 구성된다.
일부 실시예들에서, 제1 소프트웨어 애플리케이션은 애플리케이션 런처이다.
일부 실시예들에서, 제1 소프트웨어 애플리케이션은 운영 체제 애플리케이션이다.
일부 실시예들에서, 처리 유닛(1206)은 (예로서, 터치 감지 디스플레이 유닛(1202) 상에서, 디스플레이 인에이블링 유닛(1210)을 이용하여) 제1 소프트웨어 애플리케이션의 하나 이상의 뷰들의 표시를 가능하게 함으로써 하나 이상의 제스처 인식기들의 제1 세트 내의 적어도 하나의 제스처 인식기를 이용하여 터치 입력들의 시퀀스를 처리하도록 구성된다.
일부 실시예들에서, 처리 유닛(1206)은 (예로서, 터치 감지 디스플레이 유닛(1202) 상에서, 디스플레이 인에이블링 유닛(1210)을 이용하여) 하나 이상의 뷰들의 제1 세트의 표시를 제1 소프트웨어 애플리케이션의 하나 이상의 뷰들의 표시로 대체함으로써 하나 이상의 제스처 인식기들의 제1 세트 내의 적어도 하나의 제스처 인식기를 이용하여 터치 입력들의 시퀀스를 처리하도록 구성된다.
일부 실시예들에서, 처리 유닛(1206)은 (예로서, 실행 유닛(1208)을 이용하여) 제1 소프트웨어 애플리케이션, 제2 소프트웨어 애플리케이션 및 제3 소프트웨어 애플리케이션을 동시에 실행하도록 구성된다. 처리 유닛(1206)은 (예로서, 터치 감지 디스플레이 유닛(1202) 상에서, 디스플레이 인에이블링 유닛(1210)을 이용하여) 하나 이상의 뷰들의 제1 세트를 제3 소프트웨어 애플리케이션의 하나 이상의 뷰로 대체함으로써 하나 이상의 제스처 인식기들의 제1 세트 내의 적어도 하나의 제스처 인식기를 이용하여 터치 입력들의 시퀀스를 처리하도록 구성된다.
일부 실시예들에서, 처리 유닛(1206)은 (예를 들어, 디스플레이 인에이블링 유닛(1210)을 이용하여) 복수의 동시에 열린 애플리케이션 중 적어도 일부에 대응하는 열린 애플리케이션 아이콘들의 그룹을 터치 감지 디스플레이 유닛(1202)의 제1의 사전 정의된 영역에 표시하는 것을 가능하게 하고; (예로서, 디스플레이 인에이블링 유닛(1210)을 이용하여) 적어도 하나 이상의 뷰들의 제1 세트의 서브세트를 동시에 표시하도록 구성된다.
일부 실시예들에 따르면, 도 13은 전술한 바와 같은 본 발명의 원리들에 따라 구성되는 전자 장치(1300)의 기능 블록도를 나타낸다. 장치의 기능 블록들은 본 발명의 원리들을 실행하도록 하드웨어, 소프트웨어 또는 하드웨어와 소프트웨어의 조합에 의해 구현될 수 있다. 도 13에서 설명되는 기능 블록들은 전술한 바와 같은 본 발명의 원리들을 구현하기 위해 결합되거나 서브블록들로 분리될 수 있다는 것을 이 분야의 기술자들은 이해한다. 따라서, 본 명세서에서의 설명은 본 명세서에서 설명되는 기능 블록들의 임의의 가능한 결합 또는 분리 또는 추가적인 정의를 지원할 수 있다.
도 13에 도시된 바와 같이, 전자 장치(1300)는 하나 이상의 뷰들을 표시하도록 구성되는 디스플레이 유닛(1302); 내부 상태를 저장하도록 구성되는 메모리 유닛(1304); 및 디스플레이 유닛(1302) 및 메모리 유닛(1304)에 결합되는 처리 유닛(1306)을 포함한다. 일부 실시예들에서, 처리 유닛(1306)은 실행 유닛(1308), 디스플레이 인에이블링 유닛(1310), 검출 유닛(1312), 식별 유닛(1314), 전달 유닛(1316) 및 이벤트/서브이벤트 처리 유닛(1318)을 포함한다. 일부 실시예들에서, 처리 유닛(1306)은 메모리 유닛(1304)을 포함한다.
처리 유닛(1306)은 (예로서, 실행 유닛(1308)을 이용하여) 복수의 뷰를 갖는 뷰 계층 구조를 포함하는 소프트웨어를 실행하고; (예로서, 디스플레이 유닛(1302) 상에서 디스플레이 인에이블링 유닛(1310)을 이용하여) 뷰 계층 구조의 하나 이상의 뷰들의 표시를 가능하게 하고; (예로서, 실행 유닛(1308)을 이용하여) 하나 이상의 소프트웨어 요소들을 실행하도록 구성된다. 각각의 소프트웨어 요소는 특정 뷰와 관련되며, 각각의 특정 뷰는 하나 이상의 이벤트 인식기들을 포함한다. 각각의 이벤트 인식기는 하나 이상의 서브이벤트들에 기초하는 하나 이상의 이벤트 정의들, 및 이벤트 핸들러를 갖는다. 이벤트 핸들러는 타겟에 대한 액션을 지정하고, 이벤트 인식기가 하나 이상의 이벤트 정의들 중 특정 이벤트 정의에 대응하는 이벤트를 검출하는 것에 응답하여 액션을 타겟으로 전송하도록 구성된다. 처리 유닛(1306)은 (예로서, 검출 유닛(1312)을 이용하여) 하나 이상의 서브이벤트들의 시퀀스를 검출하고; (예로서, 식별 유닛(1314)을 이용하여) 뷰 계층 구조의 뷰들 중 하나를 히트 뷰로서 식별하도록 구성된다. 히트 뷰는 뷰 계층 구조 내의 어떤 뷰들이 활성적으로 관련된 뷰들인지를 설정한다. 처리 유닛(1306)은 (예로서, 전달 유닛(1316)을 이용하여) 각각의 서브이벤트를 뷰 계층 구조 내의 각각의 활성적으로 관련된 뷰에 대한 이벤트 인식기들로 전달하도록 구성된다. 뷰 계층 구조 내의 활성적으로 관련된 뷰들에 대한 적어도 하나의 이벤트 인식기는 복수의 이벤트 정의를 가지며, 이들 중 하나는 전자 장치의 내부 상태에 따라 선택되고, 적어도 하나의 이벤트 인식기는 (예를 들어, 이벤트/서브이벤트 처리 유닛(1318)을 이용하여) 선택된 이벤트 정의에 따라 서브이벤트들의 시퀀스 내의 다음 서브이벤트를 처리하기 전에 각각의 서브이벤트를 처리한다.
일부 실시예들에서, 복수의 이벤트 정의는 제1 수의 손가락을 이용하는 제1 스와이프 제스처에 대응하는 제1 이벤트 정의 및 제1 수의 손가락과 다른 제2 수의 손가락을 이용하는 제2 스와이프 제스처에 대응하는 제2 이벤트 정의를 포함한다.
일부 실시예들에서, 내부 상태는 액세스 가능성 동작 모드에 대한 하나 이상의 설정들을 포함한다.
일부 실시예들에서, 복수의 이벤트 정의의 각각의 정의는 전자 장치의 내부 상태 및 각각의 이벤트 정의가 각각의 이벤트 인식기와 다른 활성적으로 관련된 뷰들에 대한 임의의 이벤트 인식기의 이벤트 정의에 대응하지 않는다는 결정에 따라 각각의 이벤트 인식기에 대해 선택된다.
일부 실시예들에서, 뷰 계층 구조 내의 활성적으로 관련된 뷰들에 대한 둘 이상의 이벤트 인식기들 각각은 각각의 복수의 이벤트 정의를 가지며, 각각의 복수의 이벤트 정의의 각각의 이벤트 정의는 전자 장치의 내부 상태 및 각각의 이벤트 정의가 각각의 이벤트 인식기와 다른 둘 이상의 이벤트 정의를 갖는 임의의 이벤트 인식기에 대해 선택된 임의의 이벤트 정의에 대응하지 않는다는 결정에 따라 각각의 이벤트 인식기에 대해 선택된다.
일부 실시예들에서, 처리 유닛(1306)은 (예를 들어, 디스플레이 유닛(1302) 상에서 디스플레이 인에이블링 유닛(1310)을 이용하여) 뷰 계층 구조를 포함하는 소프트웨어와 다른 제1 소프트웨어 애플리케이션의 하나 이상의 뷰들의 표시를 가능하게 함으로써 선택된 이벤트 정의에 따라 각각의 서브이벤트를 처리하도록 구성된다.
일부 실시예들에서, 처리 유닛(1306)은 (예를 들어, 디스플레이 유닛(1302) 상에서 디스플레이 인에이블링 유닛(1310)을 이용하여) 뷰 계층 구조의 하나 이상의 뷰들의 표시를 뷰 계층 구조를 포함하는 소프트웨어와 다른 제1 소프트웨어 애플리케이션의 하나 이상의 뷰들의 표시로 대체함으로써 각각의 서브이벤트를 처리하도록 구성된다.
일부 실시예들에서, 처리 유닛(1306)은 (예를 들어, 디스플레이 인에이블링 유닛(1310)을 이용하여) 복수의 동시에 열린 애플리케이션 중 적어도 일부에 대응하는 열린 애플리케이션 아이콘들의 그룹을 디스플레이 유닛(1302)의 제1의 사전 정의된 영역에 표시하는 것을 가능하게 하고; (예를 들어, 디스플레이 인에이블링 유닛(1310)을 이용하여) 적어도 뷰 계층 구조의 하나 이상의 뷰들의 서브세트의 동시 표시를 가능하게 함으로써 각각의 서브이벤트를 처리하도록 구성된다.
일부 실시예들에서, 소프트웨어는 애플리케이션 런처이다.
일부 실시예들에서, 소프트웨어는 운영 체제 애플리케이션이다.
설명의 목적을 위해, 위의 설명은 특정 실시예들과 관련하여 설명되었다. 그러나, 위의 예시적인 설명은 포괄적이거나, 본 발명을 개시되는 바로 그 형태들로 한정하는 것을 의도하지 않는다. 위의 가르침에 비추어 많은 변경 및 변형이 가능하다. 실시예들은 본 발명의 원리들 및 그의 실제 응용들을 최상으로 설명하기 위해 선택되고 설명되었으며, 따라서 이 분야의 다른 기술자들로 하여금 고려되는 특정 이용에 적합한 바와 같은 다양한 변경들과 더불어 본 발명 및 실시예들을 최상으로 이용하는 것을 가능하게 한다.

Claims (20)

  1. 방법으로서,
    내부 상태를 갖는 전자 장치에서 - 상기 전자 장치는 복수의 뷰들을 포함하는 소프트웨어를 실행하도록 구성됨 -,
    상기 복수의 뷰들의 하나 이상의 뷰들을 표시하는 단계;
    상기 하나 이상의 뷰들을 표시하는 동안:
    상기 하나 이상의 뷰들의 각각의 뷰에 대응하는 터치 감지 디스플레이 상의 위치에서 터치 입력들의 시퀀스를 검출하는 단계; 및
    상기 각각의 뷰에 대한 이벤트 인식기로 상기 터치 입력들의 시퀀스를 처리하는 단계 - 상기 이벤트 인식기는 각각의 이벤트에 대한 복수의 이벤트 정의들을 가지며, 그 중 하나는 상기 전자 장치의 내부 상태에 따라 선택되고, 각각의 이벤트 인식기는 상기 선택된 이벤트 정의에 따라 상기 터치 입력들의 시퀀스를 처리함 -
    를 포함하고, 상기 처리하는 단계는,
    제1 이벤트 정의가 상기 전자 장치의 내부 상태에 따라 선택되었을 때 상기 이벤트 인식기가 상기 복수의 이벤트 정의들 중 상기 제1 이벤트 정의에 대응하는 이벤트를 검출하는 것에 응답하여, 상기 이벤트 인식기를 위해 지정된 각각의 타겟으로 액션을 전송하는 단계; 및
    상기 제1 이벤트 정의와 구별되는 제2 이벤트 정의가 상기 전자 장치의 내부 상태에 따라 선택되었을 때 상기 이벤트 인식기가 상기 복수의 이벤트 정의들 중 상기 제2 이벤트 정의에 대응하는 이벤트를 검출하는 것에 응답하여, 상기 이벤트 인식기를 위해 지정된 동일한 상기 각각의 타겟으로 액션을 전송하는 단계
    를 포함하는,
    방법.
  2. 제1항에 있어서,
    상기 이벤트 인식기로 상기 터치 입력들의 시퀀스를 처리하는 단계는,
    상기 제1 이벤트 정의가 상기 전자 장치의 내부 상태에 따라 선택되었을 때 상기 제2 이벤트 정의에 대응하는 이벤트를 상기 이벤트 인식기가 검출하는 것에 응답하여, 상기 각각의 타겟으로 상기 액션을 전송하지 않는 단계(forgoing sending); 및
    상기 제2 이벤트 정의가 상기 전자 장치의 내부 상태에 따라 선택되었을 때 상기 제1 이벤트 정의에 대응하는 이벤트를 상기 이벤트 인식기가 검출하는 것에 응답하여, 상기 각각의 타겟으로 상기 액션을 전송하지 않는 단계
    를 포함하는, 방법.
  3. 제1항 또는 제2항에 있어서,
    상기 복수의 이벤트 정의는 제1 수의 손가락을 이용하는 제1 스와이프 제스처에 대응하는 제1 이벤트 정의 및 상기 제1 수의 손가락과 다른 제2 수의 손가락을 이용하는 제2 스와이프 제스처에 대응하는 제2 이벤트 정의를 포함하는, 방법.
  4. 제1항 또는 제2항에 있어서,
    상기 내부 상태는 액세스 가능성(accessibility) 동작 모드에 대한 하나 이상의 설정들을 포함하는, 방법.
  5. 제1항 또는 제2항에 있어서,
    상기 전자 장치의 내부 상태는 상기 터치 입력들의 시퀀스의 터치 입력을 검출하기 이전에 식별되는, 방법.
  6. 제1항 또는 제2항에 있어서,
    둘 이상의 이벤트 인식기는 각각의 이벤트 인식기가 각각의 복수의 이벤트 정의를 갖고, 상기 각각의 복수의 이벤트 정의의 각각의 이벤트 정의는 상기 전자 장치의 상기 내부 상태 및 상기 각각의 이벤트 정의가 각각의 이벤트 인식기 이외에 어떠한 이벤트 인식기에 대해 선택된 어떠한 이벤트 정의에도 대응하지 않는다는 결정에 따라 상기 각각의 이벤트 인식기에 대해 선택되는, 방법.
  7. 제1항 또는 제2항에 있어서,
    상기 이벤트 인식기로 상기 터치 입력들의 시퀀스를 처리하는 단계는,
    상기 복수의 뷰들을 포함하는 소프트웨어와 다른 제1 소프트웨어 애플리케이션의 하나 이상의 뷰들을 표시하는 단계를 포함하는, 방법.
  8. 전자 장치로서,
    터치 감지 디스플레이;
    하나 이상의 프로세서들; 및
    상기 하나 이상의 프로세서들에 의하여 실행되기 위한 하나 이상의 프로그램들 및 내부 상태를 저장하는 메모리
    를 포함하고,
    상기 하나 이상의 프로그램들은 복수의 뷰들을 포함하는 소프트웨어를 포함하고, 상기 하나 이상의 프로그램들은,
    상기 복수의 뷰들의 하나 이상의 뷰들을 표시하고;
    상기 하나 이상의 뷰들을 표시하는 동안:
    상기 하나 이상의 뷰들의 각각의 뷰에 대응하는 터치 감지 디스플레이 상의 위치에서 터치 입력들의 시퀀스를 검출하고,
    상기 각각의 뷰에 대한 이벤트 인식기로 상기 터치 입력들의 시퀀스를 처리 - 상기 이벤트 인식기는 각각의 이벤트에 대한 복수의 이벤트 정의들을 가지며, 그 중 하나는 상기 전자 장치의 내부 상태에 따라 선택되고, 각각의 이벤트 인식기는 상기 선택된 이벤트 정의에 따라 상기 터치 입력들의 시퀀스를 처리함 -
    하기 위한 명령어들을 포함하고, 상기 처리하는 것은,
    제1 이벤트 정의가 상기 전자 장치의 내부 상태에 따라 선택되었을 때 상기 이벤트 인식기가 상기 복수의 이벤트 정의들 중 상기 제1 이벤트 정의에 대응하는 이벤트를 검출하는 것에 응답하여, 상기 이벤트 인식기를 위해 지정된 각각의 타겟으로 액션을 전송하고,
    상기 제1 이벤트 정의와 구별되는 제2 이벤트 정의가 상기 전자 장치의 내부 상태에 따라 선택되었을 때 상기 이벤트 인식기가 상기 복수의 이벤트 정의들 중 상기 제2 이벤트 정의에 대응하는 이벤트를 검출하는 것에 응답하여, 상기 이벤트 인식기를 위해 지정된 동일한 상기 각각의 타겟으로 액션을 전송하는
    것을 포함하는,
    전자 장치.
  9. 제8항에 있어서,
    상기 이벤트 인식기로 상기 터치 입력들의 시퀀스를 처리하는 것은,
    상기 제1 이벤트 정의가 상기 전자 장치의 내부 상태에 따라 선택되었을 때 상기 제2 이벤트 정의에 대응하는 이벤트를 상기 이벤트 인식기가 검출하는 것에 응답하여, 상기 각각의 타겟으로 상기 액션을 전송하지 않고,
    상기 제2 이벤트 정의가 상기 전자 장치의 내부 상태에 따라 선택되었을 때 상기 제1 이벤트 정의에 대응하는 이벤트를 상기 이벤트 인식기가 검출하는 것에 응답하여, 상기 각각의 타겟으로 상기 액션을 전송하지 않는
    것을 포함하는, 전자 장치.
  10. 제8항 또는 제9항에 있어서,
    상기 복수의 이벤트 정의는 제1 수의 손가락을 이용하는 제1 스와이프 제스처에 대응하는 제1 이벤트 정의 및 상기 제1 수의 손가락과 다른 제2 수의 손가락을 이용하는 제2 스와이프 제스처에 대응하는 제2 이벤트 정의를 포함하는, 전자 장치.
  11. 제8항 또는 제9항에 있어서,
    상기 전자 장치의 내부 상태는 상기 터치 입력들의 시퀀스의 터치 입력을 검출하기 이전에 식별되는, 전자 장치.
  12. 제8항 또는 제9항에 있어서,
    둘 이상의 이벤트 인식기는 각각의 이벤트 인식기가 각각의 복수의 이벤트 정의를 갖고, 상기 각각의 복수의 이벤트 정의의 각각의 이벤트 정의는 상기 전자 장치의 상기 내부 상태 및 상기 각각의 이벤트 정의가 각각의 이벤트 인식기 이외에 어떠한 이벤트 인식기에 대해 선택된 어떠한 이벤트 정의에도 대응하지 않는다는 결정에 따라 상기 각각의 이벤트 인식기에 대해 선택되는, 전자 장치.
  13. 제8항 또는 제9항에 있어서,
    상기 이벤트 인식기로 상기 터치 입력들의 시퀀스를 처리하는 것은,
    상기 복수의 뷰들을 포함하는 소프트웨어와 다른 제1 소프트웨어 애플리케이션의 하나 이상의 뷰들을 표시하는 것을 포함하는, 전자 장치.
  14. 내부 상태를 갖는 전자 장치 내의 하나 이상의 프로세서들에 의하여 실행되기 위한 하나 이상의 프로그램들을 저장하는 컴퓨터 판독 가능 저장 매체로서,
    상기 하나 이상의 프로그램들은 복수의 뷰들을 갖는 뷰 계층 구조를 포함하는 소프트웨어를 포함하고, 상기 하나 이상의 프로그램들은,
    상기 복수의 뷰들의 하나 이상의 뷰들을 표시하고;
    상기 하나 이상의 뷰들을 표시하는 동안:
    상기 하나 이상의 뷰들의 각각의 뷰에 대응하는 터치 감지 디스플레이 상의 위치에서 터치 입력들의 시퀀스를 검출하고,
    상기 각각의 뷰에 대한 이벤트 인식기로 상기 터치 입력들의 시퀀스를 처리 - 상기 이벤트 인식기는 각각의 이벤트에 대한 복수의 이벤트 정의들을 가지며, 그 중 하나는 상기 전자 장치의 내부 상태에 따라 선택되고, 각각의 이벤트 인식기는 상기 선택된 이벤트 정의에 따라 상기 터치 입력들의 시퀀스를 처리함 -
    하기 위한 명령어들을 포함하고, 상기 처리하는 것은,
    제1 이벤트 정의가 상기 전자 장치의 내부 상태에 따라 선택되었을 때 상기 이벤트 인식기가 상기 복수의 이벤트 정의들 중 상기 제1 이벤트 정의에 대응하는 이벤트를 검출하는 것에 응답하여, 상기 이벤트 인식기를 위해 지정된 각각의 타겟으로 액션을 전송하고,
    상기 제1 이벤트 정의와 구별되는 제2 이벤트 정의가 상기 전자 장치의 내부 상태에 따라 선택되었을 때 상기 이벤트 인식기가 상기 복수의 이벤트 정의들 중 상기 제2 이벤트 정의에 대응하는 이벤트를 검출하는 것에 응답하여, 상기 이벤트 인식기를 위해 지정된 동일한 상기 각각의 타겟으로 액션을 전송하는
    것을 포함하는,
    컴퓨터 판독가능 저장매체.
  15. 제14항에 있어서,
    상기 이벤트 인식기로 상기 터치 입력들의 시퀀스를 처리하는 것은,
    상기 제1 이벤트 정의가 상기 전자 장치의 내부 상태에 따라 선택되었을 때 상기 제2 이벤트 정의에 대응하는 이벤트를 상기 이벤트 인식기가 검출하는 것에 응답하여, 상기 각각의 타겟으로 상기 액션을 전송하지 않고,
    상기 제2 이벤트 정의가 상기 전자 장치의 내부 상태에 따라 선택되었을 때 상기 제1 이벤트 정의에 대응하는 이벤트를 상기 이벤트 인식기가 검출하는 것에 응답하여, 상기 각각의 타겟으로 상기 액션을 전송하지 않는
    것을 포함하는, 컴퓨터 판독가능 저장매체.
  16. 제14항 또는 제15항에 있어서,
    상기 복수의 이벤트 정의는 제1 수의 손가락을 이용하는 제1 스와이프 제스처에 대응하는 제1 이벤트 정의 및 상기 제1 수의 손가락과 다른 제2 수의 손가락을 이용하는 제2 스와이프 제스처에 대응하는 제2 이벤트 정의를 포함하는, 컴퓨터 판독가능 저장매체.
  17. 제14항 또는 제15항에 있어서,
    상기 내부 상태는 액세스 가능성 동작 모드에 대한 하나 이상의 설정들을 포함하는, 컴퓨터 판독가능 저장매체.
  18. 제14항 또는 제15항에 있어서,
    상기 전자 장치의 내부 상태는 상기 터치 입력들의 시퀀스의 터치 입력을 검출하기 이전에 식별되는, 컴퓨터 판독가능 저장매체.
  19. 제14항 또는 제15항에 있어서,
    둘 이상의 이벤트 인식기는 각각의 이벤트 인식기가 각각의 복수의 이벤트 정의를 갖고, 상기 각각의 복수의 이벤트 정의의 각각의 이벤트 정의는 상기 전자 장치의 상기 내부 상태 및 상기 각각의 이벤트 정의가 각각의 이벤트 인식기 이외에 어떠한 이벤트 인식기에 대해 선택된 어떠한 이벤트 정의에도 대응하지 않는다는 결정에 따라 상기 각각의 이벤트 인식기에 대해 선택되는, 컴퓨터 판독가능 저장매체.
  20. 제14항 또는 제15항에 있어서,
    상기 이벤트 인식기로 상기 터치 입력들의 시퀀스를 처리하는 것은,
    상기 복수의 뷰들을 포함하는 소프트웨어와 다른 제1 소프트웨어 애플리케이션의 하나 이상의 뷰들을 표시하는 것을 포함하는, 컴퓨터 판독가능 저장매체.
KR1020177018175A 2010-12-20 2011-12-19 이벤트 인식 KR101854582B1 (ko)

Applications Claiming Priority (11)

Application Number Priority Date Filing Date Title
US201061425222P 2010-12-20 2010-12-20
US61/425,222 2010-12-20
US13/077,931 US9311112B2 (en) 2009-03-16 2011-03-31 Event recognition
US13/077,931 2011-03-31
US13/077,524 US9244606B2 (en) 2010-12-20 2011-03-31 Device, method, and graphical user interface for navigation of concurrently open software applications
US13/077,927 2011-03-31
US13/077,925 2011-03-31
US13/077,927 US8566045B2 (en) 2009-03-16 2011-03-31 Event recognition
US13/077,925 US8566044B2 (en) 2009-03-16 2011-03-31 Event recognition
US13/077,524 2011-03-31
PCT/US2011/065859 WO2012087939A1 (en) 2010-12-20 2011-12-19 Event recognition

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020167020964A Division KR101754908B1 (ko) 2010-12-20 2011-12-19 이벤트 인식

Publications (2)

Publication Number Publication Date
KR20170081293A true KR20170081293A (ko) 2017-07-11
KR101854582B1 KR101854582B1 (ko) 2018-05-03

Family

ID=45491795

Family Applications (4)

Application Number Title Priority Date Filing Date
KR1020137019463A KR101523866B1 (ko) 2010-12-20 2011-12-19 이벤트 인식
KR1020147036632A KR101645685B1 (ko) 2010-12-20 2011-12-19 이벤트 인식
KR1020177018175A KR101854582B1 (ko) 2010-12-20 2011-12-19 이벤트 인식
KR1020167020964A KR101754908B1 (ko) 2010-12-20 2011-12-19 이벤트 인식

Family Applications Before (2)

Application Number Title Priority Date Filing Date
KR1020137019463A KR101523866B1 (ko) 2010-12-20 2011-12-19 이벤트 인식
KR1020147036632A KR101645685B1 (ko) 2010-12-20 2011-12-19 이벤트 인식

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020167020964A KR101754908B1 (ko) 2010-12-20 2011-12-19 이벤트 인식

Country Status (7)

Country Link
EP (3) EP2656192B1 (ko)
JP (3) JP5747235B2 (ko)
KR (4) KR101523866B1 (ko)
AU (1) AU2011349513B2 (ko)
NL (1) NL2007993C2 (ko)
TW (2) TWI520044B (ko)
WO (1) WO2012087939A1 (ko)

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2013259630B2 (en) 2012-05-09 2016-07-07 Apple Inc. Device, method, and graphical user interface for transitioning between display states in response to gesture
WO2013169851A2 (en) 2012-05-09 2013-11-14 Yknots Industries Llc Device, method, and graphical user interface for facilitating user interaction with controls in a user interface
WO2013169843A1 (en) 2012-05-09 2013-11-14 Yknots Industries Llc Device, method, and graphical user interface for manipulating framed graphical objects
WO2013169849A2 (en) 2012-05-09 2013-11-14 Industries Llc Yknots Device, method, and graphical user interface for displaying user interface objects corresponding to an application
DE112013002412T5 (de) 2012-05-09 2015-02-19 Apple Inc. Vorrichtung, Verfahren und grafische Benutzeroberfläche zum Bereitstellen von Rückmeldung für das Wechseln von Aktivierungszuständen eines Benutzerschnittstellenobjekts
WO2013169842A2 (en) 2012-05-09 2013-11-14 Yknots Industries Llc Device, method, and graphical user interface for selecting object within a group of objects
AU2013259642A1 (en) 2012-05-09 2014-12-04 Apple Inc. Device, method, and graphical user interface for moving and dropping a user interface object
DE112013002387T5 (de) 2012-05-09 2015-02-12 Apple Inc. Vorrichtung, Verfahren und grafische Benutzeroberfläche für die Bereitstellung taktiler Rückkopplung für Operationen in einer Benutzerschnittstelle
DE112013002409T5 (de) 2012-05-09 2015-02-26 Apple Inc. Vorrichtung, Verfahren und grafische Benutzeroberfläche für die Anzeige zusätzlicher Informationen in Reaktion auf einen Benutzerkontakt
WO2013169865A2 (en) 2012-05-09 2013-11-14 Yknots Industries Llc Device, method, and graphical user interface for moving a user interface object based on an intensity of a press input
EP2847660B1 (en) 2012-05-09 2018-11-14 Apple Inc. Device, method, and graphical user interface for selecting user interface objects
US10558352B2 (en) 2012-06-22 2020-02-11 Sony Corporation Detection device for detection of operation based on contact with operation surface
CN103529976B (zh) * 2012-07-02 2017-09-12 英特尔公司 手势识别系统中的干扰消除
JP6188288B2 (ja) * 2012-07-20 2017-08-30 キヤノン株式会社 情報処理装置及びその制御方法
JP5700020B2 (ja) * 2012-10-10 2015-04-15 コニカミノルタ株式会社 画像処理装置、プログラム及び操作イベント判別方法
WO2014105275A1 (en) 2012-12-29 2014-07-03 Yknots Industries Llc Device, method, and graphical user interface for forgoing generation of tactile output for a multi-contact gesture
KR102001332B1 (ko) 2012-12-29 2019-07-17 애플 인크. 콘텐츠를 스크롤할지 선택할지 결정하기 위한 디바이스, 방법 및 그래픽 사용자 인터페이스
EP2939095B1 (en) 2012-12-29 2018-10-03 Apple Inc. Device, method, and graphical user interface for moving a cursor according to a change in an appearance of a control icon with simulated three-dimensional characteristics
US9703477B2 (en) * 2013-02-19 2017-07-11 Facebook, Inc. Handling overloaded gestures
JP6155869B2 (ja) 2013-06-11 2017-07-05 ソニー株式会社 表示制御装置、表示制御方法およびプログラム
US9292186B2 (en) * 2014-01-31 2016-03-22 3M Innovative Properties Company Note capture and recognition with manual assist
JP6328797B2 (ja) 2014-05-30 2018-05-23 アップル インコーポレイテッド 1つのデバイスの使用から別のデバイスの使用への移行
KR20160046695A (ko) 2014-10-21 2016-04-29 유홍준 소프트웨어 요소 부분인식 처리 방법 및 시스템
US9645732B2 (en) 2015-03-08 2017-05-09 Apple Inc. Devices, methods, and graphical user interfaces for displaying and using menus
US10048757B2 (en) 2015-03-08 2018-08-14 Apple Inc. Devices and methods for controlling media presentation
US9632664B2 (en) 2015-03-08 2017-04-25 Apple Inc. Devices, methods, and graphical user interfaces for manipulating user interface objects with visual and/or haptic feedback
US10095396B2 (en) 2015-03-08 2018-10-09 Apple Inc. Devices, methods, and graphical user interfaces for interacting with a control object while dragging another object
US9639184B2 (en) 2015-03-19 2017-05-02 Apple Inc. Touch input cursor manipulation
US9733823B2 (en) 2015-04-01 2017-08-15 Microsoft Technology Licensing, Llc View activation via hit testing in an asynchronous windowing system
US20170045981A1 (en) 2015-08-10 2017-02-16 Apple Inc. Devices and Methods for Processing Touch Inputs Based on Their Intensities
US10200598B2 (en) 2015-06-07 2019-02-05 Apple Inc. Devices and methods for capturing and interacting with enhanced digital images
US9891811B2 (en) 2015-06-07 2018-02-13 Apple Inc. Devices and methods for navigating between user interfaces
US10346030B2 (en) 2015-06-07 2019-07-09 Apple Inc. Devices and methods for navigating between user interfaces
US9830048B2 (en) 2015-06-07 2017-11-28 Apple Inc. Devices and methods for processing touch inputs with instructions in a web page
US9860451B2 (en) 2015-06-07 2018-01-02 Apple Inc. Devices and methods for capturing and interacting with enhanced digital images
US10416800B2 (en) 2015-08-10 2019-09-17 Apple Inc. Devices, methods, and graphical user interfaces for adjusting user interface objects
US9880735B2 (en) 2015-08-10 2018-01-30 Apple Inc. Devices, methods, and graphical user interfaces for manipulating user interface objects with visual and/or haptic feedback
US10235035B2 (en) 2015-08-10 2019-03-19 Apple Inc. Devices, methods, and graphical user interfaces for content navigation and manipulation
DK201670728A1 (en) * 2016-09-06 2018-03-19 Apple Inc Devices, Methods, and Graphical User Interfaces for Providing Feedback During Interaction with an Intensity-Sensitive Button
CN108388393B (zh) 2018-01-02 2020-08-28 阿里巴巴集团控股有限公司 移动终端点击事件的识别方法和装置
US10877660B2 (en) * 2018-06-03 2020-12-29 Apple Inc. Devices and methods for processing inputs using gesture recognizers
US10921975B2 (en) * 2018-06-03 2021-02-16 Apple Inc. Devices, methods, and user interfaces for conveying proximity-based and contact-based input events
US11131967B2 (en) 2019-05-06 2021-09-28 Apple Inc. Clock faces for an electronic device
KR20220121408A (ko) 2021-02-25 2022-09-01 주식회사 수앤그린테크 수생식물을 이용한 녹조 방지시스템 및 그 방법
US11907605B2 (en) 2021-05-15 2024-02-20 Apple Inc. Shared-content session user interfaces
US11449188B1 (en) 2021-05-15 2022-09-20 Apple Inc. Shared-content session user interfaces
KR20240034452A (ko) * 2022-09-07 2024-03-14 쿠팡 주식회사 로그 정보를 관리하는 방법 및 이를 지원하는 전자 장치

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5612719A (en) * 1992-12-03 1997-03-18 Apple Computer, Inc. Gesture sensitive buttons for graphical user interfaces
US9292111B2 (en) * 1998-01-26 2016-03-22 Apple Inc. Gesturing with a multipoint sensing device
US7030861B1 (en) * 2001-02-10 2006-04-18 Wayne Carl Westerman System and method for packing multi-touch gestures onto a hand
KR100593982B1 (ko) * 2003-11-06 2006-06-30 삼성전자주식회사 가상 그래피티를 제공하는 장치 및 방법과 그에 따른기록매체
EP3121697A1 (en) * 2004-07-30 2017-01-25 Apple Inc. Mode-based graphical user interfaces for touch sensitive input devices
TWI316196B (en) * 2004-11-01 2009-10-21 Ibm Apparatus method and system for improved feedback of pointing device event processing
JP2009523267A (ja) * 2005-09-15 2009-06-18 アップル インコーポレイテッド トラックパッドデバイスの未加工データを処理するシステム及び方法
US9002342B2 (en) * 2005-12-02 2015-04-07 Nokia Corporation System, apparatus, and method for dynamically customizing and configuring applications
US8296684B2 (en) * 2008-05-23 2012-10-23 Hewlett-Packard Development Company, L.P. Navigating among activities in a computing device
US7890299B2 (en) * 2007-05-21 2011-02-15 Qualcomm, Incorporated Providing event-controlled continuous logging for a mobile operating environment
US8681108B2 (en) * 2007-07-30 2014-03-25 Kyocera Corporation Input apparatus
JP2009110286A (ja) * 2007-10-30 2009-05-21 Toshiba Corp 情報処理装置、ランチャー起動制御プログラムおよびランチャー起動制御方法
US8416196B2 (en) * 2008-03-04 2013-04-09 Apple Inc. Touch event model programming interface
US8645827B2 (en) * 2008-03-04 2014-02-04 Apple Inc. Touch event model
US9268483B2 (en) * 2008-05-16 2016-02-23 Microsoft Technology Licensing, Llc Multi-touch input platform
US8375336B2 (en) * 2008-05-23 2013-02-12 Microsoft Corporation Panning content utilizing a drag operation
JP2010015238A (ja) * 2008-07-01 2010-01-21 Sony Corp 情報処理装置、及び補助情報の表示方法
US8390577B2 (en) * 2008-07-25 2013-03-05 Intuilab Continuous recognition of multi-touch gestures
US20100088628A1 (en) * 2008-10-07 2010-04-08 Sony Ericsson Mobile Communications Ab Live preview of open windows
US8466879B2 (en) * 2008-10-26 2013-06-18 Microsoft Corporation Multi-touch manipulation of application objects
JP4853507B2 (ja) * 2008-10-30 2012-01-11 ソニー株式会社 情報処理装置、情報処理方法およびプログラム
KR101019335B1 (ko) * 2008-11-11 2011-03-07 주식회사 팬택 제스처를 이용한 이동단말의 어플리케이션 제어 방법 및 시스템
KR101521932B1 (ko) 2009-01-19 2015-05-20 엘지전자 주식회사 단말기 및 그 제어 방법
US8285499B2 (en) * 2009-03-16 2012-10-09 Apple Inc. Event recognition
US8493344B2 (en) * 2009-06-07 2013-07-23 Apple Inc. Devices, methods, and graphical user interfaces for accessibility using a touch-sensitive surface

Also Published As

Publication number Publication date
KR101523866B1 (ko) 2015-05-28
EP3982242A3 (en) 2022-06-22
KR20150012313A (ko) 2015-02-03
KR101854582B1 (ko) 2018-05-03
EP3982242A2 (en) 2022-04-13
KR101645685B1 (ko) 2016-08-04
KR20160097377A (ko) 2016-08-17
EP2656192B1 (en) 2017-08-16
WO2012087939A1 (en) 2012-06-28
TW201512962A (zh) 2015-04-01
EP2656192A1 (en) 2013-10-30
KR101754908B1 (ko) 2017-07-07
JP5747235B2 (ja) 2015-07-08
EP3258366B1 (en) 2021-12-08
AU2011349513B2 (en) 2015-04-02
JP5980368B2 (ja) 2016-08-31
NL2007993A (en) 2012-06-25
AU2011349513A1 (en) 2013-05-09
JP2016224970A (ja) 2016-12-28
TW201237735A (en) 2012-09-16
TWI470537B (zh) 2015-01-21
EP3258366A1 (en) 2017-12-20
KR20130111615A (ko) 2013-10-10
NL2007993C2 (en) 2012-08-14
JP6785082B2 (ja) 2020-11-18
JP2015158931A (ja) 2015-09-03
JP2014504419A (ja) 2014-02-20
TWI520044B (zh) 2016-02-01

Similar Documents

Publication Publication Date Title
KR101754908B1 (ko) 이벤트 인식
US11755196B2 (en) Event recognition
CN110362414B (zh) 代理手势识别器
US9311112B2 (en) Event recognition
US8566044B2 (en) Event recognition
AU2021290380B2 (en) Event recognition

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
GRNT Written decision to grant