我使用带有“setInputView”功能的自定义键盘实现了文本字段。但我有一个问题:我的键盘框架不是标准的 iphone 键盘框架。
问题是:如何更改自定义键盘的大小?我知道一些功能,例如:UIKeyboardFrameBeginUserInfoKey,..etc。
请注意:iPhone 键盘框架 = 0,264,320,216 我的自定义键盘框架 = 0,0,320,460
希望您的友好合作,最好的问候... P
我使用带有“setInputView”功能的自定义键盘实现了文本字段。但我有一个问题:我的键盘框架不是标准的 iphone 键盘框架。
问题是:如何更改自定义键盘的大小?我知道一些功能,例如:UIKeyboardFrameBeginUserInfoKey,..etc。
请注意:iPhone 键盘框架 = 0,264,320,216 我的自定义键盘框架 = 0,0,320,460
希望您的友好合作,最好的问候... P
事实证明,您分配给UITextField
' 属性的自定义输入视图的默认行为是将视图大小调整为与默认键盘相同的框架。尝试设置(我使用InputViewController
输入视图的名称,但您可以使用任何您想要的名称):
inputViewController = [[InputViewController alloc] initWithNibName:@"InputViewController" bundle:nil];
inputViewController.delegate = self;
inputViewController.view.autoresizingMask = UIViewAutoresizingNone; // This is the code that will make sure the view does not get resized to the keyboards frame.
有关更多详细信息,您可以查看此链接,该链接由Apple提供:
如果 UIKit 在其自动调整掩码中遇到具有 UIViewAutoresizingFlexibleHeight 值的输入视图,它会更改高度以匹配键盘。
希望有帮助!
要将键盘 inputView 设置为与本机键盘相同的大小,只需执行以下操作:
inputView.autoresizingMask = UIViewAutoresizingFlexibleHeight;
要设置自己的框架,请执行以下操作:
inputView.autoresizingMask = UIViewAutoresizingNone;
来自苹果:
在定义输入视图或输入附件视图的大小和内容方面,您有很大的灵活性。尽管这些视图的高度可以是您想要的,但它们应该与系统键盘的宽度相同。如果 UIKit 在其自动调整掩码中遇到具有 UIViewAutoresizingFlexibleHeight 值的输入视图,它会更改高度以匹配键盘。输入视图和输入附件视图可能具有的子视图(例如控件)的数量没有限制。有关输入视图和输入附件视图的更多指导,请参阅 iOS 人机界面指南。
我有同样的问题。我通过注册 UIKeyboardDidShowNotification 解决了这个问题(不幸的是,UIKeyboardWillShowNotification 不起作用),然后在显示键盘后更改视图大小。但是,当它向上移动时,它仍然在键盘顶部有一个白框。这对我来说很好,因为它是通过一个白色背景的 UITextView 进来的。但是,如果您进入任何其他颜色的对象,则在正确调整视图大小之前它看起来会有点难看。您可以通过将背景颜色设置为 clearColor 来解决此问题。
// Add this while initializing your view
self.backgroundColor = [UIColor clearColor]; // Needed because we can't resize BEFORE showing the view. Otherwise you will see an ugly white box moving up w/ the keyboard
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWasShown:)
name:UIKeyboardDidShowNotification object:nil];
// Called when the UIKeyboardDidShowNotification is sent.
- (void)keyboardWasShown:(NSNotification*)aNotification
{
CGRect rect = self.frame;
rect.size.height = 164;
self.frame = rect;
}
此外,如果您使用 UIViewController 来设计您的 inputView,请不要使用 UIViewController.view ...无论 AutoresizeMask 如何,在旋转时调整大小不正确似乎都有很多问题。
对我有用的是使用我现有的 UI 并使用编辑器 > 嵌入 > 视图。然后创建一个新的插座,并将该插座作为 inputView 传递。突然,旋转错误的调整大小消失了。
对我来说 msgambel 的解决方案不起作用。但方法正确,我正在使用 inputView 的autoresizingMask。以前我有不同的设置,但避免自定义键盘上的白色额外空间的正确方法是:
我仅将其应用于最外面的视图。