public override void ViewDidLoad() { base.ViewDidLoad(); var token = UIDevice.CurrentDevice.Name; try { // 调试按钮 _debugButton = CreateButtonToView(View, "...", NSLayoutAttribute.CenterX, NSLayoutAttribute.Top); } catch (Exception ex) { } try { // Token 按钮 _tokenButton = CreateButtonToView(View, $"使用此文本设置你的 PC 键盘:{token}", NSLayoutAttribute.CenterX, NSLayoutAttribute.CenterY); } catch (Exception ex) { Debug(ex); } try { // 切换输入法按钮 _nextKeyboardButton = CreateButtonToView(View, "Next Keyboard", NSLayoutAttribute.Left, NSLayoutAttribute.Bottom); _nextKeyboardButton.AddTarget(this, new Selector("advanceToNextInputMode"), UIControlEvent.TouchUpInside); } catch (Exception ex) { Debug(ex); } try { // 确认按钮 _returnButton = CreateButtonToView(View, TextDocumentProxy.ReturnKeyType.ToString(), NSLayoutAttribute.Right, NSLayoutAttribute.Bottom); } catch (Exception ex) { Debug(ex); } // 初始化打字。 if (_receiver == null) { _receiver = new CloudKeyboardReceiver(HostInfo.BaseUrl, token); _receiver.Typing += DidReceive; _receiver.Confirmed += DidConfirm; _receiver.ExceptionOccurred += ExceptionDidOccur; } }
private static void RunAsMobileEnd() { Console.Title = "Walterlv Cloud Keyboard - Mobile"; var inScreenCount = 0; // 模拟构造函数。 var receiver = new CloudKeyboardReceiver(HostInfo.BaseUrl, "0"); receiver.Typing += OnReceived; receiver.Confirmed += OnConfirmed; receiver.Start(); // 模拟消息循环。 ConsoleKeyInfo key; do { key = Console.ReadKey(true); } while (key.Key != ConsoleKey.Escape); receiver.Stop(); void OnReceived(object sender, TypingTextEventArgs e) { ClearCurrentDocument(); SetDocument(e.Typing); } void OnConfirmed(object sender, TypingTextEventArgs e) { ClearCurrentDocument(); inScreenCount++; Console.ForegroundColor = ConsoleColor.Gray; Console.Write("[上屏] "); Console.Write(e.Typing.Text); Console.ResetColor(); Console.WriteLine(); } void SetDocument(TypingText typing) { for (var i = 0; i < typing.Text.Length; i++) { var c = typing.Text[i]; if (typing.CaretStartIndex <= i && typing.CaretEndIndex > i) { Console.ForegroundColor = ConsoleColor.Green; Console.Write(c); Console.ResetColor(); } else { Console.Write(c); } } } void ClearCurrentDocument() { Console.CursorTop = inScreenCount; Console.CursorLeft = 0; for (var i = 0; i < 320; i++) { Console.Write(' '); } Console.CursorTop = inScreenCount; Console.CursorLeft = 0; } }