iOS:自定义 UITextField 的 inputView 大小

Posted

技术标签:

【中文标题】iOS:自定义 UITextField 的 inputView 大小【英文标题】:iOS: Customise UITextField's inputView size 【发布时间】:2012-11-15 09:27:01 【问题描述】:

我需要自定义UITextField'sinputView的大小。我分配给inputView 的自定义视图的大小已经是260x220,但inputView 仍显示为260x768(Portrait) 和260x1024(Landscap)。我尝试更改 inputView's Frame 但仍然没有变化。无论如何我可以修改UITextField's inputView Frame 使其只占用底部屏幕的一定空间?

textField.inputView = numPadViewController.view;
[textField.inputView setFrame:CGRectMake(0, 0, 260, 220)];

[编辑]

来自this,我也尝试过关注,但没有成功!

numPadViewController.view.autoresizingMask = UIViewAutoresizingNone;
textField.inputView = numPadViewController.view;

【问题讨论】:

***.com/questions/6042060/…的可能重复 【参考方案1】:

你在用笔尖吗?确保笔尖中的框架设置正确。此外,您不能设置inputView 的框架。您只能将view 的框架设置为inputView BEFORE,您将其设置为inputView。否则我需要查看更多代码。

另外,最好让inputView 具有相同的屏幕宽度(768 纵向,1024 横向)。您仍然可以将视图居中,并在两侧留出透明空间。希望有帮助!

【讨论】:

是的,我正在使用 NIB。在 NIB 本身中查看 260x220 并具有清晰的背景颜色。我在自动调整为左角的视图中有另一个完全相同大小的视图。使用此设置,用户只能看到 260x220 的左侧输入视图,其余宽度(261 到 768)是透明的,但它无法识别那么多区域的用户交互,这很糟糕!这就是为什么我希望我的输入视图调整大小为 260x220 并保持在左上角! 那你为什么不直接把inputView 传递给右侧的父视图呢? 我有主要的父视图,它有左、上、下的孩子。左孩子需要自定义输入视图。底部的孩子是 UITableViewController 所以当我有 inputview 可见时,我可以在下半部分 tableview 上滚动。我可以将触摸转发给我的父母,但我认为它不会滚动 uitableview?无论如何,如果无法调整 inputview 的大小,那么我将继续并在 inputview 可见时禁用顶部和底部的用户交互,这对我有用。 @msgambel 有没有办法在将视图设置为 inputView 后更改视图的框架(更具体地说是大小)?我的应用程序中有一个功能应该允许用户展开/折叠自定义键盘,但我无法实现。 @rokridi 有两种方法可以实现该功能。第一个是有一个展开/折叠按钮,使UITextField 处于活动状态/处于活动状态,从而调出自定义inputView。这应该为您的应用程序提供展开/折叠功能。或者,您可以在动画展开/折叠自定义视图完成后重置inputView。这将重置框架,并为您提供所需的效果。希望有帮助!

以上是关于iOS:自定义 UITextField 的 inputView 大小的主要内容,如果未能解决你的问题,请参考以下文章

【iOS开发】自定义UITextField

iOS用UITextField自定义UISearchBar遇到的布局问题

iOS:如何从 tableview 的自定义单元格中的 UITextField 访问值

快速滚动ios时自定义单元格中的UITextField值出现问题

iOS之UITextField怎么自定义键盘的return键

RunTime 在iOS中的应用与UITextField占位字符placeholder自定义