The error message is an integral part of the SLComposeViewController and as far as I remember you can't control this.
The display of the error message and the associate process of sending the tweet is putting your app into a background state.
What would happen if you stored the tweet string when submitted, and then on each submission checked to see if the current tweet isEqualToString of the old tweet ? You could then abort the process if the tweets matched.
Another approach would be to save a BOOL to user defaults when the user starts the tweet process. When the app resumes and the delegate is called, read back in this saved BOOL. If the user was in the process of tweeting then don't show your password boxes.