You could implement a little state machine type thing. Your problem sounds like it has several discrete states, the initial waiting state, the showing string state, the state a user can now press the action button. You could neatly wrap that up in a simple object.
Your object might have a simple enum with a few states, a variable with what state it is in and a few methods such as OnAction(). The action method might look something like:
void OnAction()
{
switch(state)
{
case Idle:
state = ShowingString;
break;
case ShowingString:
// Some logic to check the time has passed
if(timePassed)
state = next state;
break;
// etc
}
}
In some of your other methods they will look similar, maybe you have an Update method that is doing your timings, that would behave differently depending on the state. Perhaps you have methods that can be called to check if a string should be displayed and what that string is. State machines are great, they are a little bit more effort than some of the other suggestions but they expand really well. I think as soon as you start to need several isolated variables to get something done it is a good candidate to making into a separate object.