3

iPad 用のカスタム テンキーパッドを作成しました。私たちのテスターである iPad では、このキーボードが突然ずれてしまい、「キーボード ボタン」が通常配置される場所からドラッグを開始することでカスタム キーボードを移動できることを理解するのにかなりの時間がかかりました。

誤って移動してしまった場合、顧客は元に戻すのに非常に苦労します。その特定の入力画面でキーボードを移動するのは意味がないので、キーボードを移動できることをユーザーに見えるようにする何らかのハンドルをペイントする代わりに、キーボードが移動しないようにすることをお勧めします。(これは、1 つの数値だけを編集するための特別な入力画面です。キーボードはレイアウトの一部のようなもので、この画面には常に表示されています。)

私は一生懸命試しましたが、この特定の場所にドラッグしたときにキーボードが動かないようにする方法を見つけることができませんでした. 既存の GestureRecognizer を削除したり (存在しなかった)、独自のボタンを前面に配置したりするなど、私のすべての汚いアイデアでさえ役に立ちませんでした。

編集: キーボードは、私が考えることができる 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 に答える