             
             // reset cached keyboard height
             cachedKeyboardHeight = 0;
+            
+            isFirstActivate = true;
         }
         
         var smStage:Stage = systemManager.stage;

        // activated again while the deactivate effect is playing. In that case,
        // we want to save the cached positions from the first activation.
        var deactivateComplete:Boolean = 
            (!isSoftKeyboardEffectActive && (event.type == EffectEvent.EFFECT_END));
        
        if (!event || deactivateComplete)
        {

     */
    private function softKeyboardActivateHandler(event:SoftKeyboardEvent=null):void
    {
        var isFirstActivate:Boolean = false;
        
        // Save the original y-position and height if this is the first 
        // ACTIVATE event and an existing deactivate effect is not already in
        // progress.
