{"id":17145863,"url":"https://github.com/soutaro/virtualgesture","last_synced_at":"2026-01-26T00:38:42.197Z","repository":{"id":3162502,"uuid":"4193147","full_name":"soutaro/VirtualGesture","owner":"soutaro","description":"Cheat UIGestureRecognizer for testing","archived":false,"fork":false,"pushed_at":"2012-05-10T08:51:16.000Z","size":203,"stargazers_count":9,"open_issues_count":0,"forks_count":3,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-05-21T05:11:36.463Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Objective-C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/soutaro.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2012-05-01T14:49:18.000Z","updated_at":"2020-08-04T01:07:33.000Z","dependencies_parsed_at":"2022-09-20T17:46:56.033Z","dependency_job_id":null,"html_url":"https://github.com/soutaro/VirtualGesture","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/soutaro/VirtualGesture","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soutaro%2FVirtualGesture","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soutaro%2FVirtualGesture/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soutaro%2FVirtualGesture/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soutaro%2FVirtualGesture/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/soutaro","download_url":"https://codeload.github.com/soutaro/VirtualGesture/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soutaro%2FVirtualGesture/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28762904,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-26T00:37:26.264Z","status":"ssl_error","status_checked_at":"2026-01-26T00:37:25.959Z","response_time":113,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-14T21:07:04.029Z","updated_at":"2026-01-26T00:38:42.182Z","avatar_url":"https://github.com/soutaro.png","language":"Objective-C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# VirtualGesture\n\niOS gestures are source of headache for programmers. From the point of\nview of automated integration testing, they are evil since it is\ndifficult to simulate from programs.\n\nVirtualGesture simulate gestures by directoly invoking actions\nassociated with UIGestureRecognizers. If you are using built-in\ngesture recognizers -- UISwipeGestureRecognizer,\nUILongPressGestureRecognizer, etc --, you can use VirtualGesture to\nsimulate user's multi touch gestures.\n\n## Example\n\n    // Long press gesture\n    [view recognizeLongPress];\n    \n    // Swipe gesture\n    [view recognizeSwipe:UISwipeGestureRecognizerDirectionRight];\n    \n    // Pinch gesture\n    [view recognizePinch:0.2];\n\n## Pros\n\n* Simple API. Instead of configureing every touches of every frame and\n  every fingers, just say *swipe* or something like that.\n* Timing matters. Some gesture recognizers have `velocity` property.\n  It is difficult to set up such *time dependent properties* by\n  sending touch events directory. VirtualGesture can do that. It just\n  setup gesture recognizer's properties, and invoke an action\n  associated with it.\n\n## Cons\n\n* Not simulating user input.\n* Customized gesture recognizers are not supported. For example,\n  UIWebView and MKMapView do not respond to virtual pinch gestures.\n  They do not use UIPinchGestureRecognizer but a customized, private\n  gesture recognizer.\n* It is not clear, whether it works or not for complex usage of\n  multiple gesture recognizers.\n\n# Author\n\nWritten by Soutaro Matsumoto. (matsumoto at soutaro dot com)\n\nReleased under the MIT License: www.opensource.org/licenses/mit-license.php\n\ngithub.com/soutaro/VirtualGesture\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoutaro%2Fvirtualgesture","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsoutaro%2Fvirtualgesture","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoutaro%2Fvirtualgesture/lists"}