Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Clean, versatile pull gesture for iOS perfectionists. Comes with pull-to-create and pull-to-refresh.
Objective-C Ruby
Latest commit 3ffbdc7 @peyton Update Russian translation

Pull to create / pull to refresh


MOOPullGesture implements pull gestures on table views through a UIGestureRecognizer subclass. Built to be extensible, MOOPullGesture comes with pull-to-create and pull-to-refresh.

MOOPullGesture contains MOOPullGestureRecognizer, which tracks a table view's scrolling and communicates updates to a trigger view through a simple protocol, MOOTriggerView.


The Demo Project folder contains working examples of pull-to-create and pull-to-refresh.


Please see PullToCreateViewController.m and PullToCreateDelegate.m. Pay special attention to the UIScrollViewDelegate methods on the delegate--it's important to forward those.


Take a look at PullToRefreshViewController.m.


First: Clone into a submodule

In your project's folder, type:

git submodule add git://

A submodule allows your repository to contain a clone of an external project. If you don't want a submodule, use:

git clone git://

Next: Add classes

Drag MOOPullGesture/ into your Xcode project's file browser.

Note: An options dialog will pop up. If you're using MOOPullGesture as a submodule, you should uncheck "Copy items into destination group's folder (if needed)."

Then: Add QuartzCore.framework

QuartzCore.framework installation

With your application's target selected in the navigator, click on the "Build Phases" tab. Under "Link Binary With Libraries," click the "+" button and add QuartzCore.framework.

Finally: Import the headers

#import "MOOPullGestureRecognizer.h"

...and a MOOTriggerView, either MOOCreateView.h or MOORefreshView.h

Later: Update to the latest version

cd into the MOOPullGesture directory and run:

git pull


Inspired by Pier-Olivier Thibault's PHRefreshTriggerView, Clear's pull-to-create, and Twitter's pull-to-refresh.

Something went wrong with that request. Please try again.