You got disconnected and your last move wasn't received by the server. For whatever reason, the app doesn't recognize that you get disconnected. Your opponent was sitting there thinking you stopped moving.
There are a lot of topics about this issue. The keep-alive code being used by the app (and even the web client) probably needs to be made a bit more robust.
On a couple of occasions recently I've seen some suspicious behaviour in blitz games played on the iPad client. I'd got myself to a winning position and the opponent appeared to abandon the game after my last move. I sit there waiting for them to time out. Their clock ticks and suddenly when it reaches zero my last move auto magically disappears as though I haven't made it and I'm the one that times out and loses! It's quite annoying... I understand that there can be comms issues so my move might not have been recorded but what makes me suspicious is that this always seems to happen when I've attained a won position and with no prior warning (e.g. Poor response times or anything) until that critical point. If I didn't know better It looks almost like the client has been spoofed into not accepting my next move so the server times me out) Of course this is a bit paranoid but even if it's all totally innocent why does my client show the opponents clock as ticking if it hasn't had an acknowledgement from the server of my move? That just seems like a software design issue. At the least there should be some signal that the client is guessing with the timer when clearly it is guessing here (guessing the server got my move without confirmation)... That would at least give some warning the game had problems and the reversal at the end wouldn't be such a shock (except I half expect it now). Unless of course someone really has figured a way to spoof the client.