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); }
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)); }
void OnReplaceText(object sender, CCIMEKeybardEventArgs e) { var focusedTextField = sender as CCTextField; e.Text = e.Text.ToUpper(); }
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); }