【问题标题】:How to make an iOS page with keypad up?如何制作带有键盘的iOS页面?
【发布时间】:2014-03-23 10:26:10
【问题描述】:

我想创建一个文本消息页面,并希望在页面加载时看到键盘。这就是我所拥有的,这是行不通的。你能找出我做错了什么吗?

在我的头文件中:

@interface taskViewController : ViewController
@property (nonatomic, retain) IBOutlet UITextField *taskDescription;

    - (void) viewWillAppear:(BOOL)animated;

@end

在我的 .m 文件中:

#import "taskViewController.h"

@interface taskViewController ()
@end

@implementation taskViewController
    @synthesize taskDescription = _taskDescription;

    - (void) viewWillAppear:(BOOL)animated {
        [super viewWillAppear:animated];
        [_taskDescription becomeFirstResponder];
 }
@end

【问题讨论】:

  • 不确定这是否是您的问题,但可能没有帮助 1. 您不应该在 .h 中定义 viewWillAppear 2. 不要打电话给 super 3. 更改 @ 987654326@ 到 self.taskDescription 并移动到 viewDidAppear
  • 如何为 ViewController 创建布局? taskDescription 是否在 IB 或 Storyboard 中定义,然后正确连接到 IBOutLet?

标签: ios keyboard pageload becomefirstresponder


【解决方案1】:

尝试添加

[self.view addSubview:_taskDescription];

在调用 UIResponder 之前。正如 Apple 在 UIResponder 参考中所说,必须在调用 UIResponder 之前将对象添加到视图层次结构中。

所以你的 -viewWillAppear: 方法将是:

-(void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];

    [self.view addSubview:_taskDescription];
    [_taskDescription becomeFirstResponder];
}

更多信息请访问UIResponder Reference

【讨论】:

  • 他通过 .xib 文件执行此操作,因此完全不建议手动添加子视图。子视图将在某个时候添加,这就是为什么我建议等到通过完全加载 .xib 来添加它。
【解决方案2】:

viewWillAppear: 中,tackDescription 显然还没有完全加载,可能是nil

我的建议是将[self.taskDescription becomeFirstResponder] 的呼叫转移到viewDidLoad

viewDidLoad 中,您可以确定整个视图已加载并且所有内容均已正确添加。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多