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;
            }
        }
예제 #2
0
        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;
            }
        }