Example #1
0
        void OnReplaceText(object sender, CCIMEKeybardEventArgs e)
        {
            var focusedTextField = sender as CCTextField;

            if (e.Length > charLimit)
            {
                e.Text = e.Text.Substring(0, charLimit - 1);
            }
        }
        bool OnReplaceText(CCIMEKeybardEventArgs eventArgs)
        {
            var handler = ReplaceText;

            if (handler != null)
            {
                return(ProcessCancelableEvent(handler, eventArgs));
            }

            return(false);
        }
Example #3
0
        void OnDeleteBackward(object sender, CCIMEKeybardEventArgs e)
        {
            var focusedTextField = sender as CCTextField;

            if (focusedTextField == null || string.IsNullOrEmpty(focusedTextField.Text))
            {
                e.Cancel = true;
                return;
            }

            // Just cancel this if we would backspace over the PlaceHolderText as it would just be
            // replaced anyway and the Action below should not be executed.
            var delText = focusedTextField.Text;

            if (delText == focusedTextField.PlaceHolderText)
            {
                e.Cancel = true;
                return;
            }

            delText = delText.Substring(delText.Length - 1);

            // create a delete text sprite and do some action
            var label = new CCLabel(delText, TextInputTestScene.FONT_NAME, TextInputTestScene.FONT_SIZE + 3, CCLabelFormat.SpriteFont);

            this.AddChild(label);

            // move the sprite to fly out
            CCPoint beginPos      = focusedTextField.Position;
            CCSize  textfieldSize = focusedTextField.ContentSize;
            CCSize  labelSize     = label.ContentSize;

            beginPos.X += (textfieldSize.Width - labelSize.Width) / 2.0f;

            var nextRandom = (float)CCRandom.Next(RANDOM_MAX);

            CCSize  winSize = VisibleBoundsWorldspace.Size;
            CCPoint endPos  = new CCPoint(-winSize.Width / 4.0f, winSize.Height * (0.5f + nextRandom / (2.0f * RANDOM_MAX)));

            float duration       = 1;
            float rotateDuration = 0.2f;
            int   repeatTime     = 5;

            label.Position = beginPos;

            var delAction = new CCSpawn(new CCMoveTo(duration, endPos),
                                        new CCRepeat(
                                            new CCRotateBy(rotateDuration, (CCRandom.Next() % 2 > 0) ? 360 : -360),
                                            (uint)repeatTime),
                                        new CCFadeOut(duration)
                                        );

            label.RunActionsAsync(delAction, new CCRemoveSelf(true));
        }
        private bool ProcessCancelableEvent(EventHandler<CCIMEKeybardEventArgs> handler, CCIMEKeybardEventArgs eventArgs)
        {
            var canceled = false;
            Delegate inFocusDelegate = null;
            var sender = TextFieldInFocus;
            foreach (var instantHandler in handler.GetInvocationList())
            {
                if (eventArgs.Cancel)
                {
                    break;
                }

                // Make sure we process all event handlers except for our focused text field
                // We need to process it at the end to give the other event handlers a chance 
                // to cancel the event from propogating to our focused text field.
                if (instantHandler.Target == sender)
                    inFocusDelegate = instantHandler;
                else
                    instantHandler.DynamicInvoke(sender, eventArgs);
            }

            canceled = eventArgs.Cancel;

            if (inFocusDelegate != null && !canceled)
                inFocusDelegate.DynamicInvoke(sender, eventArgs);

            return canceled;
        }
        bool OnReplaceText(CCIMEKeybardEventArgs eventArgs)
        {
            var handler = ReplaceText;
            if (handler != null)
            {
                return ProcessCancelableEvent(handler, eventArgs);
            }

            return false;
        }
        private bool ProcessCancelableEvent(EventHandler <CCIMEKeybardEventArgs> handler, CCIMEKeybardEventArgs eventArgs)
        {
            var      canceled        = false;
            Delegate inFocusDelegate = null;
            var      sender          = TextFieldInFocus;

            foreach (var instantHandler in handler.GetInvocationList())
            {
                if (eventArgs.Cancel)
                {
                    break;
                }

                // Make sure we process all event handlers except for our focused text field
                // We need to process it at the end to give the other event handlers a chance
                // to cancel the event from propogating to our focused text field.
                if (instantHandler.Target == sender)
                {
                    inFocusDelegate = instantHandler;
                }
                else
                {
                    instantHandler.DynamicInvoke(sender, eventArgs);
                }
            }

            canceled = eventArgs.Cancel;

            if (inFocusDelegate != null && !canceled)
            {
                inFocusDelegate.DynamicInvoke(sender, eventArgs);
            }

            return(canceled);
        }
 private void TextFieldIMEImplementation_DeleteBackward(object sender, CCIMEKeybardEventArgs e)
 {
     DeleteBackwards();
 }
 private void TextFieldIMEImplementation_InsertText(object sender, CCIMEKeybardEventArgs e)
 {
     InsertText(e.Text, e.Length);
 }
        void OnReplaceText (object sender, CCIMEKeybardEventArgs e)
        {
            var focusedTextField = sender as CCTextField;

            e.Text = e.Text.ToUpper();

        }
        void OnReplaceText (object sender, CCIMEKeybardEventArgs e)
        {
            var focusedTextField = sender as CCTextField;

            if (e.Length > charLimit)
                e.Text = e.Text.Substring (0, charLimit - 1);
        }
        void OnInsertText (object sender, CCIMEKeybardEventArgs e)
        {
            var focusedTextField = sender as CCTextField;

            if (focusedTextField == null)
            {
                e.Cancel = true;
                return;
            }

            var text = e.Text;
            var currentText = focusedTextField.Text;

            // if insert enter, treat as default to detach with ime
            if ("\n" == text)
            {
                return;
            }

            // if the textfield's char count is more than charLimit, don't insert text anymore.
            if (focusedTextField.CharacterCount >= charLimit)
            {
                e.Cancel = true;
                return;
            }

            // create a insert text sprite and do some action
            var label = new CCLabel(text, TextInputTestScene.FONT_NAME, TextInputTestScene.FONT_SIZE, CCLabelFormat.SpriteFont);
            this.AddChild(label);
            var color = new CCColor3B { R = 226, G = 121, B = 7 };
            label.Color = color;

            var inputTextSize = focusedTextField.CharacterCount == 0 ? CCSize.Zero : focusedTextField.ContentSize;

            // move the sprite from top to position
            var endPos = focusedTextField.Position;
            endPos.Y -= inputTextSize.Height;

            if (currentText.Length > 0)
            {
                endPos.X += inputTextSize.Width / 2;
            }

            var beginPos = new CCPoint(endPos.X, VisibleBoundsWorldspace.Size.Height - inputTextSize.Height * 2);

            var duration = 0.5f;
            label.Position = beginPos;
            label.Scale = 8;

            CCAction seq = new CCSequence(
                new CCSpawn(
                    new CCMoveTo(duration, endPos),
                    new CCScaleTo(duration, 1),
                    new CCFadeOut(duration)),
                new CCRemoveSelf(true));
            label.RunAction(seq);
        }
        void OnDeleteBackward (object sender, CCIMEKeybardEventArgs e)
        {
            var focusedTextField = sender as CCTextField;

            if (focusedTextField == null || string.IsNullOrEmpty(focusedTextField.Text))
            {
                e.Cancel = true;
                return;
            }

            // Just cancel this if we would backspace over the PlaceHolderText as it would just be
            // replaced anyway and the Action below should not be executed.
            var delText = focusedTextField.Text;
            if (delText == focusedTextField.PlaceHolderText)
            {
                e.Cancel = true;
                return;
            }

            delText = delText.Substring(delText.Length - 1);

            // create a delete text sprite and do some action
            var label = new CCLabel(delText, TextInputTestScene.FONT_NAME, TextInputTestScene.FONT_SIZE + 3, CCLabelFormat.SpriteFont);
            this.AddChild(label);

            // move the sprite to fly out
            CCPoint beginPos = focusedTextField.Position;
            CCSize textfieldSize = focusedTextField.ContentSize;
            CCSize labelSize = label.ContentSize;
            beginPos.X += (textfieldSize.Width - labelSize.Width) / 2.0f;

            var nextRandom = (float)CCRandom.Next(RANDOM_MAX);

            CCSize winSize = VisibleBoundsWorldspace.Size;
            CCPoint endPos = new CCPoint(-winSize.Width / 4.0f, winSize.Height * (0.5f + nextRandom / (2.0f * RANDOM_MAX)));

            float duration = 1;
            float rotateDuration = 0.2f;
            int repeatTime = 5;
            label.Position = beginPos;

            var delAction = new CCSpawn(new CCMoveTo(duration, endPos),
                new CCRepeat(
                        new CCRotateBy(rotateDuration, (CCRandom.Next() % 2 > 0) ? 360 : -360),
                        (uint)repeatTime),
                        new CCFadeOut(duration)
                );

            label.RunActionsAsync(delAction, new CCRemoveSelf(true));

        }
Example #13
0
        void OnReplaceText(object sender, CCIMEKeybardEventArgs e)
        {
            var focusedTextField = sender as CCTextField;

            e.Text = e.Text.ToUpper();
        }
Example #14
0
        void OnInsertText(object sender, CCIMEKeybardEventArgs e)
        {
            var focusedTextField = sender as CCTextField;

            if (focusedTextField == null)
            {
                e.Cancel = true;
                return;
            }

            var text        = e.Text;
            var currentText = focusedTextField.Text;

            // if insert enter, treat as default to detach with ime
            if ("\n" == text)
            {
                return;
            }

            // if the textfield's char count is more than charLimit, don't insert text anymore.
            if (focusedTextField.CharacterCount >= charLimit)
            {
                e.Cancel = true;
                return;
            }

            // create a insert text sprite and do some action
            var label = new CCLabel(text, TextInputTestScene.FONT_NAME, TextInputTestScene.FONT_SIZE, CCLabelFormat.SpriteFont);

            this.AddChild(label);
            var color = new CCColor3B {
                R = 226, G = 121, B = 7
            };

            label.Color = color;

            var inputTextSize = focusedTextField.CharacterCount == 0 ? CCSize.Zero : focusedTextField.ContentSize;

            // move the sprite from top to position
            var endPos = focusedTextField.Position;

            endPos.Y -= inputTextSize.Height;

            if (currentText.Length > 0)
            {
                endPos.X += inputTextSize.Width / 2;
            }

            var beginPos = new CCPoint(endPos.X, VisibleBoundsWorldspace.Size.Height - inputTextSize.Height * 2);

            var duration = 0.5f;

            label.Position = beginPos;
            label.Scale    = 8;

            CCAction seq = new CCSequence(
                new CCSpawn(
                    new CCMoveTo(duration, endPos),
                    new CCScaleTo(duration, 1),
                    new CCFadeOut(duration)),
                new CCRemoveSelf(true));

            label.RunAction(seq);
        }