         
         current = delegate?.swipeView(self, viewForItemInIndex: index)
         if current != nil {
-            left = delegate?.swipeView(self, viewForItemInIndex: index - 1)
-            right = delegate?.swipeView(self, viewForItemInIndex: index + 1)
+            left = (delegate?.swipeView(self, allowSwipeToLeft: index) ?? false) ? delegate?.swipeView(self, viewForItemInIndex: index - 1) : nil
+            right = (delegate?.swipeView(self, allowSwipeToRight: index) ?? false) ? delegate?.swipeView(self, viewForItemInIndex: index + 1) : nil
         } else {
             left = nil
             right = nil

    public func scrollViewDidEndScrollingAnimation(scrollView: UIScrollView) {
        
        if scrollView === self.scrollView {
            endMoving()
            jumpSwap = nil
            scrolling = false
        }
    }
    

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