我们为iPad创建了一个自定义数字小键盘。在我们的测试人员iPad上,这个键盘突然移动到位,我们花了很长时间才发现可以通过在“键盘按钮”通常位于的位置开始拖动来移动该自定义键盘。 p>
如果客户意外移动它,客户将很难将其移回。因为在特定的输入屏幕上移动键盘是没有意义的,我宁愿更喜欢阻止键盘移动而不是绘制某种使用户可以看到键盘可以移动的手柄。 (这是一个特殊的输入屏幕,仅用于编辑一个数字值。键盘就像布局的一部分,并且在此屏幕上始终可见。)
我努力了但是在这个特定的地方拖动时找不到阻止键盘移动的方法。甚至我所有的肮脏想法,如删除可能已存在的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;
}
}
}
答案 0 :(得分:1)
根据您的解释,我猜您将键盘作为主视图的子视图。相反,我会将其设置为UItextFields的inputView,然后使第一个textField成为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)对于风景和肖像模式,到目前为止它没有给我任何问题。