             return
         }
         
-        left = left ?? delegate?.swipeView(self, viewForItemInIndex: index - 1)
-        right = right ?? delegate?.swipeView(self, viewForItemInIndex: index + 1)
+        left = (scrolling || (delegate?.swipeView(self, allowSwipeToLeft: index) ?? false)) ? (left ?? delegate?.swipeView(self, viewForItemInIndex: index - 1)) : nil
+        right = (scrolling || (delegate?.swipeView(self, allowSwipeToRight: index) ?? false)) ? (right ?? delegate?.swipeView(self, viewForItemInIndex: index + 1)) : nil
         
         if left == nil && right == nil {
             _layoutOnePage()

                if !scrolling && !scrollView.decelerating {
                    jumpSwap = nil
                    scrolling = true
                    if left == nil {
                        scrollView.scrollRectToVisible(CGRect(x: scrollView.frame.width, y: 0, width: scrollView.frame.width, height: scrollView.frame.height), animated: true)
                    } else {

                if !scrolling && !scrollView.decelerating {
                    jumpSwap = nil
                    scrolling = true
                    _layoutSubviews()
                    scrollView.scrollRectToVisible(CGRect(x: 0, y: 0, width: scrollView.frame.width, height: scrollView.frame.height), animated: true)
                }
            } else {
