Gandhi himself said that the reason non-violent protest worked against the British empire was that the British considered themselves moral people and could not ignore violence done against the nonviolent (words to that effect, the quote can be googled by someone with more spare time).