2017-02-07 5 views
0

я столкнулся некоторые странные проблемы, вот мой код для регистрации жест панорамированияSwift: метод делегата UIPanGestureRecognizer не называется

public func registerGesture(_ view: UIView) { 

     self.gesture = UIPanGestureRecognizer(target: self, action: #selector(handleGesture(_:))) 
     self.gesture?.minimumNumberOfTouches = 1 
     self.gesture?.maximumNumberOfTouches = 1 
     self.gesture?.delegate = self 

     view.addGestureRecognizer(self.gesture!) 
} 

UIPanGestureRecognizer метод делегата не дозвонились.

extension PanGestureHandler : UIGestureRecognizerDelegate { 

    public func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool { 
     guard let g = self.gesture else { return false } 
     guard g.view is UIScrollView else { return false } 
     return true 
} 

    public func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldBeRequiredToFailBy 
    otherGestureRecognizer: UIGestureRecognizer) -> Bool { 
     return false 
} 

}

Вместо этого, если я отладки кода и напечатать строку self.gesture.delegate, то метод делегата вызывался.

Каждый раз, когда мне нужно распечатать приведенную выше строку, чтобы работать. Пожалуйста, помогите мне, спасибо

+1

Где вы вызова метода registerGesture? –

+0

@PiotrBernad, спасибо за ваш ответ. Я нахожу решение, я создал singleton sharedinstance для класса, теперь он работает нормально. – Raju

ответ

0

Для приведенного выше вопроса, я исправили путем добавления ниже sharedinstace,

static let sharedInstance : PanGestureHandler = { 
    let instance = PanGestureHandler() 
    return instance 
    }() 

и регистрации pangesture для просмотра с помощью,

let gestureInstance = PanGestureHandler.sharedInstance 
    gestureInstance.registerGesture(self.view) 
Смежные вопросы