3

我们为 iPad 创建了一个自定义数字小键盘。在我们的测试人员 iPad 上,这个键盘突然被移出了适当的位置,我们花了很长时间才发现可以通过在“键盘按钮”通常所在的位置开始拖动来移动那个自定义键盘。

客户将很难将其移回以防万一他们不小心移动了它。由于在特定输入屏幕上移动键盘没有任何意义,我宁愿阻止键盘移动,而不是绘制某种手柄,让用户可以看到键盘可以移动。(这是一个特殊的输入屏幕,仅用于编辑单个数值。键盘就像布局的一部分,在此屏幕上始终可见。)

我努力尝试,但找不到阻止键盘在这个特定位置拖动时移动的方法。甚至我所有的肮脏想法,例如删除可能预先存在的 GestureRecognizers(没有)或将我自己的按钮放在前面也无济于事。

编辑:键盘甚至可以在我能想到的用 Monotouch 编写的最简单的自定义键盘应用程序中移动。我错过了什么吗?

using System;
using MonoTouch.Foundation;
using MonoTouch.UIKit;

namespace KeyboardTest
{
    [Register ("AppDelegate")]
    public partial class AppDelegate : UIApplicationDelegate
    {
        private UIWindow window;
        private UIViewController viewController;
        private UIViewController keyboardViewController;

        public override bool FinishedLaunching (UIApplication app, NSDictionary options)
        {
            window = new UIWindow (UIScreen.MainScreen.Bounds);

            // Create a red dummy keyboard
            keyboardViewController = new UIViewController();
            keyboardViewController.View.BackgroundColor = UIColor.Red;

            // Create a textfield and assign our beautiful red keyboard as its InputView
            UITextField textField = new UITextField();
            textField.BorderStyle = UITextBorderStyle.RoundedRect;
            textField.Frame = new System.Drawing.RectangleF(44, 44, 200, 44);
            textField.InputView = keyboardViewController.View;

            // create a rootview controller and add our textfield
            viewController = new UIViewController();
            viewController.View.AddSubview(textField);

            window.RootViewController = viewController;
            window.MakeKeyAndVisible ();

            return true;
        }
    }
}
4

1 回答 1

1

对于您的解释,我猜您将键盘作为主视图的子视图。相反,我会将其设置为 UItextFields 的 inputView,然后让您的第一个 textFields 成为 viewDidLoad 上的第一个响应者。就像是:

-(void)viewDidLoad{

[super viewDidLoad];

CustomkeyPad *keypad=[[CustomKeyPad alloc]init];  // initWithFrame would probably be better

self.textField.delegate=self;
self.textField.inputView=keypad;
[self.textField becomeFirstResponder];

}

我不在我的 Mac 中,所以我可能在这里犯了一些错误,但这就是我的想法,这就是我在制作自定义键盘时的做法,而且它对于两种风景都是通用的(iPad 和 iPhone)和肖像模式,到目前为止它没有给我带来任何问题。

于 2012-05-25T06:53:16.013 回答