Я выяснил, в чём была проблема: трансформация трансформации не меняет центр вида, поэтому проверка границ для центра никогда не бывает эффективной, потому что центр всегда остается неизменным, даже если вид на самом деле перемещается черезscreen.
Таким образом, решение будет заключаться в замене следующих строк:
[recognizer setTranslation:translation inView:self.view.superview];
CGPoint translationInViewCoordiateSystem = [recognizer translationInView:self.view];
self.view.transform = CGAffineTransformTranslate(self.view.transform, translationInViewCoordiateSystem.x , translationInViewCoordiateSystem.y );
[recognizer setTranslation:CGPointZero inView:self.view];
На:
currentCenter.x += translation.x;
currentCenter.y += translation.y;
self.view.center = currentCenter;
[recognizer setTranslation:CGPointZero inView:self.view.superview];