Look inside UIInput and check how what happens on WinRT differs from other platforms. OnSelect(true) is sent when the object gains focus, and OnSelect(false) is sent when it loses it. The keyboard is opened inside UIInput's Update() function on the frame after selection occurs.
Note that input is one of Unity's shortcomings, as you may notice by seeing all those #ifdefs inside that file. Every single one of Unity-supported platforms handles input differently and some things work while others don't.