---
title: "Adding a swipe gesture recognizer"
canonical_url: "https://www.nutrient.io/guides/ios/knowledge-base/adding-swipe-gesture-recognizer/"
md_url: "https://www.nutrient.io/guides/ios/knowledge-base/adding-swipe-gesture-recognizer.md"
last_updated: "2026-06-09T10:22:07.671Z"
description: "You can add a UISwipeGestureRecognizer to PDFViewController’s view at any time: for Nutrient iOS SDK."
---

You can add a [`UISwipeGestureRecognizer`](https://developer.apple.com/documentation/uikit/uiswipegesturerecognizer) to [`PDFViewController`](https://www.nutrient.io/api/ios/documentation/pspdfkitui/pdfviewcontroller)’s view at any time:

### SWIFT

```swift

let swipeGestureRecognizer = UISwipeGestureRecognizer()
swipeGestureRecognizer.direction =.left

let pdfViewController = PDFViewController()
pdfViewController.view.addGestureRecognizer(swipeGestureRecognizer)

```

### OBJECTIVE-C

```objc

UISwipeGestureRecognizer *swipeGestureRecognizer = [[UISwipeGestureRecognizer alloc] init];
swipeGestureRecognizer.direction = UISwipeGestureRecognizerDirectionLeft;

PSPDFViewController *pdfViewController = [[PSPDFViewController alloc] init]
[pdfViewController.view addGestureRecognizer:swipeGestureRecognizer];

```

However, this isn’t enough to make it work. By default, UIKit will prioritize [`UIScrollView`](https://developer.apple.com/documentation/uikit/uiscrollview)’s [`panGestureRecognizer`](https://developer.apple.com/documentation/uikit/uiscrollview/1619425-pangesturerecognizer) over your [`UISwipeGestureRecognizer`](https://developer.apple.com/documentation/uikit/uiswipegesturerecognizer). To reverse this and allow scrolling to proceed only if your swipe gesture recognizer has failed, you’ll need to set up a failure requirement in both the [`documentViewController(_:configureScrollView:)`](https://www.nutrient.io/api/ios/documentation/pspdfkitui/pdfdocumentviewcontrollerdelegate/documentviewcontroller(_:configurescrollview:)) and [`documentViewController(_:configureZoom:forSpreatAt:)`](https://www.nutrient.io/api/ios/documentation/pspdfkitui/pdfdocumentviewcontrollerdelegate/documentviewcontroller(_:configurezoom:forspreadat:)) delegate methods:

### SWIFT

```swift

func documentViewController(_ documentViewController: PDFDocumentViewController, configureScrollView scrollView: UIScrollView) {
    scrollView.panGestureRecognizer.require(toFail: self.swipeGestureRecognizer)
}

func documentViewController(_ documentViewController: PDFDocumentViewController, configureZoom zoomView: UIScrollView, forSpreadAt spreadIndex: Int) {
    zoomView.panGestureRecognizer.require(toFail: self.swipeGestureRecognizer)
}

```

### OBJECTIVE-C

```objc

- (void)documentViewController:(PSPDFDocumentViewController *)documentViewController configureScrollView:(UIScrollView *)scrollView {
    [scrollView.panGestureRecognizer requireGestureRecognizerToFail:self.swipeGestureRecognizer];
}

- (void)documentViewController:(PSPDFDocumentViewController *)documentViewController configureZoomView:(UIScrollView *)zoomView forSpreadAtIndex:(NSInteger)spreadIndex {
    [zoomView.panGestureRecognizer requireGestureRecognizerToFail:self.swipeGestureRecognizer];
}

```

Don’t forget to consider the experience of scrolling and zooming. If you’re adding a swipe gesture recognizer, consider either disabling scrolling and zooming entirely, or conditionally preventing your swipe gesture recognizer from proceeding. For example, to only allow swiping when zoomed out and still allow panning a page around when zoomed in, you could write the following:

### SWIFT

```swift

func documentViewController(_ documentViewController: PDFDocumentViewController, configureZoom zoomView: UIScrollView, forSpreadAt spreadIndex: Int) {
    zoomView.delegate = self
    zoomView.panGestureRecognizer.require(toFail: self.swipeGestureRecognizer)
}

func scrollViewDidZoom(_ scrollView: UIScrollView) {
    self.lastKnownZoomScale = scrollView.zoomScale
}

func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
    if gestureRecognizer === self.swipeGestureRecognizer {
        return self.lastKnownZoomScale == 1
    } else {
        return true
    }
}

```

### OBJECTIVE-C

```objc

- (void)documentViewController:(PSPDFDocumentViewController *)documentViewController configureZoomView:(UIScrollView *)zoomView forSpreadAtIndex:(NSInteger)spreadIndex {
    zoomView.delegate = self;
    [zoomView.panGestureRecognizer requireGestureRecognizerToFail:self.swipeGestureRecognizer];
}

- (void)scrollViewDidZoom:(UIScrollView *)scrollView {
    self.lastKnownZoomScale = scrollView.zoomScale;
}

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer {
    if gestureRecognizer == self.swipeGestureRecognizer {
        return self.lastKnownZoomScale == 1;
    } else {
        return YES;
    }
}

```

For more details on how to coordinate multiple gesture recognizers, refer to our guide on [the document view hierarchy](https://www.nutrient.io/guides/ios/customizing-the-interface/the-document-view-hierarchy.md) and Apple’s guide on [coordinating multiple gesture recognizers](https://developer.apple.com/documentation/uikit/touches_presses_and_gestures/coordinating_multiple_gesture_recognizers/preferring_one_gesture_over_another).
---

## Related pages

- [Adding Vector Image Annotation From Instant Json](/guides/ios/knowledge-base/adding-vector-image-annotation-from-instant-json.md)
- [Adjusting Size Of Popovers](/guides/ios/knowledge-base/adjusting-size-of-popovers.md)
- [Fix app store connect operation errors in Xcode](/guides/ios/knowledge-base/app-store-connect-operation-errors.md)
- [Archive Errors Cocoapods](/guides/ios/knowledge-base/archive-errors-cocoapods.md)
- [Configuring Scroll Views](/guides/ios/knowledge-base/configuring-scroll-views.md)
- [Customize PDF rendering on iOS](/guides/ios/knowledge-base/customize-document-rendering.md)
- [Customize Share Sheet Apps](/guides/ios/knowledge-base/customize-share-sheet-apps.md)
- [Customize your iOS navigation bar above crop UI](/guides/ios/knowledge-base/customize-the-navigation-bar-in-crop.md)
- [Customizing Annotation Toolbar Frame](/guides/ios/knowledge-base/customizing-annotation-toolbar-frame.md)
- [Debugging Issues](/guides/ios/knowledge-base/debugging-issues.md)
- [Disabling Adding Pages With Images](/guides/ios/knowledge-base/disabling-adding-pages-with-images.md)
- [Disabling Auto Opening Comments](/guides/ios/knowledge-base/disabling-auto-opening-comments.md)
- [Disabling Directional Lock](/guides/ios/knowledge-base/disabling-directional-lock.md)
- [Drawing An Upright Stamp Annotation On A Rotated Page](/guides/ios/knowledge-base/drawing-an-upright-stamp-annotation-on-a-rotated-page.md)
- [Disabling Text Selection](/guides/ios/knowledge-base/disabling-text-selection.md)
- [Gatekeeper Alerts Mac Catalyst](/guides/ios/knowledge-base/gatekeeper-alerts-mac-catalyst.md)
- [Generate PDFs from complex HTML](/guides/ios/knowledge-base/generating-pdf-from-complex-html.md)
- [Customize action sheet appearance on iOS links](/guides/ios/knowledge-base/hide-or-customize-the-action-sheet-link-long-press.md)
- [How Do I Change How To Open Links](/guides/ios/knowledge-base/how-do-i-change-how-to-open-links.md)
- [Adding a custom view controller in iOS](/guides/ios/knowledge-base/how-do-i-add-custom-controller-to-containerviewcontroller.md)
- [How Do I Customize Search Results](/guides/ios/knowledge-base/how-do-i-customize-search-results.md)
- [How Do I Customize The Annotation Inspector](/guides/ios/knowledge-base/how-do-i-customize-the-annotation-inspector.md)
- [How Do I Download Pspdfkit As Fat Frameworks](/guides/ios/knowledge-base/how-do-i-download-pspdfkit-as-fat-frameworks.md)
- [Capture ink signatures using SignatureViewController](/guides/ios/knowledge-base/how-do-i-get-an-image-from-signatureviewcontroller.md)
- [Get notifications for unlocked password-protected PDFs](/guides/ios/knowledge-base/how-do-i-get-notified-when-a-password-protected-document-is-unlocked.md)
- [Other dependencies.](/guides/ios/knowledge-base/how-do-i-migrate-from-carthage-to-spm.md)
- [How Do I Migrate From Cocoapods To Spm](/guides/ios/knowledge-base/how-do-i-migrate-from-cocoapods-to-spm.md)
- [How Do I Present A Pspdftabbedviewcontroller In Cordova](/guides/ios/knowledge-base/how-do-i-present-a-pspdftabbedviewcontroller-in-cordova.md)
- [How to add annotations programmatically in iOS](/guides/ios/knowledge-base/how-do-i-programmatically-add-annotation-to-the-saved-annotations-list.md)
- [How Do I Remove The Sign Arrow From The Signature Form Field](/guides/ios/knowledge-base/how-do-i-remove-the-sign-arrow-from-the-signature-form-field.md)
- [Fix incorrect page color in night appearance mode](/guides/ios/knowledge-base/how-do-i-reset-custom-document-render-options-before-change-the-appearance-mode.md)
- [How Do I Select Or Deselect An Annotation Programmatically](/guides/ios/knowledge-base/how-do-i-select-or-deselect-an-annotation-programmatically.md)
- [Creating invisible digital signatures on iOS](/guides/ios/knowledge-base/invisible-signature.md)
- [Fixing library not found issues in iOS apps](/guides/ios/knowledge-base/library-not-found-swiftpm.md)
- [Block annotation editing and deletion in iOS](/guides/ios/knowledge-base/prevent-annotation-editing-allow-manipulation.md)
- [Processor Write To File Url](/guides/ios/knowledge-base/processor-write-to-file-url.md)
- [Search Special Characters](/guides/ios/knowledge-base/search-special-characters.md)
- [Separate Photo Library And Camera Actions](/guides/ios/knowledge-base/separate-photo-library-and-camera-actions.md)
- [Setting The Initial Page Selection When Sharing](/guides/ios/knowledge-base/setting-the-initial-page-selection-when-sharing.md)
- [Showing Annotation Tools In The Main Toolbar](/guides/ios/knowledge-base/showing-annotation-tools-in-the-main-toolbar.md)
- [How to store electronic signatures using Instant JSON](/guides/ios/knowledge-base/store-electronic-signatures-from-instant-json-annotations.md)
- [Zoom to specific PDF annotations easily](/guides/ios/knowledge-base/zoom-to-specific-annotation.md)
- [Suppressing File Coordination Alerts](/guides/ios/knowledge-base/suppressing-file-coordination-alerts.md)

