UITextField becomeFirstResponder 和重叠子视图

Posted

技术标签:

【中文标题】UITextField becomeFirstResponder 和重叠子视图【英文标题】:UITextField becomeFirstResponder and overlap subviews 【发布时间】:2011-02-10 11:15:15 【问题描述】:

我有两个问题。我创建了一个类“myfirstclass.m”,并在我的“projectController.m”中创建了一个 UITextField txt。在“myfirstclass.m”中,我有一个以 txt 作为参数的方法。如果在类内我调用方法:

[txt becomeFirstResponder];

它不起作用。显然“myfirstclass.m”扩展了NSObject,“projectController.m”扩展了UIViewController。我该如何解决?因为在同一个类“myfirstclass.m”中,我有另一个方法可以创建另一个 UITextField,它被添加到主视图中,当它显示时,这个当前的 textField 成为第一响应者。

我的第二个问题是:我有一个 UIButton 和一个 UITextField,我将它们添加到广告视图中,我想要:UITextField 显示在前台,UIButton 显示在后台。我现在可以通过 UITextFiled 的属性设置背景图像,但我希望 UIButon 比 UITextField 大,但我希望 UIButton 是背景,UITextField 是前景。

提前致谢!

【问题讨论】:

【参考方案1】:

对于第一个问题:我假设您正在使用界面生成器。确保您的 UITextField 连接到您的 UIViewController 子类的相应插座。忘记在界面生成器中连接插座是对象未出现在屏幕上或代码中未正确响应的最常见问题。

【讨论】:

不,我都是通过代码创建的。我想做的事有可能吗?:D 我确实在“myFirstClass”中而不是在“projectController”中成为FirstResponder 好的,然后用一个非常小的可重现测试用例重复问题并发布代码。 或许你找到解决办法了吗?【参考方案2】:

这是一个示例伪代码:

projectController.m

#import "myFirstClass.h"

UITextField *txt =  [[UITextField alloc] initWithFrame:CGRectMake(0,38,194,37)];
myFirstClass *ojb = [[myFirstClass alloc] init];
[obj sendTxt:txt];

myFirstClass.m

- (void) sendTxt:(UITextField *text) 
UITextField *txt = text;
[txt becomeFirstResponder];

“myfirstclass.m”扩展了 NSObject,“projectController.m”扩展了 UIViewController。

【讨论】:

以上是关于UITextField becomeFirstResponder 和重叠子视图的主要内容,如果未能解决你的问题,请参考以下文章

如何在 UITextField 子类中设置 UITextField 的属性

UITextField

在 UITextField 操作中将 UITextField 字符串转换为 Double

如何调整 UITextField 占位符文本以适合 UITextField 宽度?

如果添加了新的 UITextField,如何向下移动许多 UITextField

如果 UITextField 已经创建,不要在 Tap 上重新创建 UITextField