Unity 5.1? Can I have a copy? I've always wanted to have something from 2 years in the future. :)
Your NGUI is quite a bit out of date, so I would start by updating to the latest version. After that, enable the Debug option on the UICamera so that you can see what the touch is interacting with. Beyond that, I'm not sure -- you will need to add some Debug.Logs there. I suggest covering your entire screen with a big collider and logging the UICamera.lastTouchPosition via NGUIDebug.Log in OnDrag.
FYI a workaround for me is to toggle between this two modes:and
Screen.orientation = Screen.orientation;
Screen.orientation = ScreenOrientation.AutoRotation;
That moves between freezing the orientation, and setting back to auto. That may not work for everyone. My particular use-case simply requires temporarily disabling auto-rotation while my gyro mode is active. I don't care if it's in portrait or landscape when that happens. Then I restore it to auto when my gyro mode is deactivated.
Whatever is wrong with Unity's orientation changing logic, moving between these two modes doesn't cause errant behavior at least.