点击 UITextField 时既不显示键盘也不显示光标
Posted
技术标签:
【中文标题】点击 UITextField 时既不显示键盘也不显示光标【英文标题】:Neither keyboard nor cursor are appearing when a UITextField is tapped 【发布时间】:2014-03-16 16:09:43 【问题描述】:我正在 Xcode 5.0.2 上测试一个简单的应用程序。使用故事板,我拖动了两个通过 segue 连接的视图控制器。在第一个视图控制器上有一个按钮,按下该按钮后,下一个控制器会出现,它有两个文本字段。当我点击文本字段时,键盘没有显示并且文本光标丢失。
textFieldViewController.h 文件
@property (weak, nonatomic) IBOutlet UITextField *nameField;
@property (weak, nonatomic) IBOutlet UITextField *numberField;
- (IBAction)textFieldDoneEditing:(id)sender;
- (IBAction)backgroundTap:(id)sender;
textFieldViewController.m 文件
- (IBAction)textFieldDoneEditing:(id)sender
[sender resignFirstResponder];
- (IBAction)backgroundTap:(id)sender
[self.nameField resignFirstResponder];
[self.numberField resignFirstResponder];
截图
【问题讨论】:
您是否将textFieldDoneEditing:
方法连接到您的textView?如果是意味着什么是控制状态?
您是否从情节提要中将您的 viewController(例如 XYZViewController)类设置为 viewController 的身份检查器
@iMani on DidEndonExit
@hellosheikh - 试试这个 - 似乎你打开了自动布局并将其关闭或 - 转到编辑器 -> 解决自动布局问题 -> 清除约束或更新框架
谢谢你很抱歉仍然没有出现键盘
【参考方案1】:
由于模拟器设置,Xcode 6/ios 8 也可能发生这种情况:
Xcode 6: Keyboard does not show up in simulator
【讨论】:
【参考方案2】:确保您的UITextfield
中的UserInteraction
是Enabled
,并且您对文本字段没有任何视图。
【讨论】:
用户交互已启用,没有视图 您的情节提要是否启用了特定的 UITextField?或者你可以像下面这样以编程方式设置它: UITextField *txtfld=[[UITextField alloc]init]; txtfld.userInteractionEnabled=YES; txtfld.enabled=YES; 您可以将 uitextfield 直接拖放到该视图而无需任何代码和连接并检查发生了什么吗? 是的,我试过了,但是这个新的文本框也没有显示还没有代码的键盘 在你的主视图控制器或第一个屏幕上运行相同的东西吗?【参考方案3】:- (BOOL)textFieldShouldReturn:(UITextField *)textField
//Text Field Delegate
[textField resignFirstResponder];
return TRUE;
你可以试试这个并使用情节提要设置 textFields 委托
或使用
- (void)viewDidLoad
nameField.delegate = self;
numberField.delegate = self;
textFieldViewController.h 文件中的一个
更改为@interface textFieldViewController : UIViewController <UITextFieldDelegate>
【讨论】:
感谢您的回答,但仍然无效。我一直点击文本字段,但没有任何反应 你注意到我的编辑了吗?您是否正确实现了与情节提要的 IBOutlet 连接 是的,我注意到了,我认为我正确地实现了它..让我给你看屏幕截图 我已经更新了我的问题..看看我附上的图片 你能添加一个从右边的代表到左边的文本字段的连接【参考方案4】:我遇到过这个问题,就我而言,我有一个自定义视图,可以按需显示各种子视图。一切都很好,直到 iOS 7.1 发布。
因此,当(第一种情况)我的视图即将添加为子视图以及(第二种情况)视图被初始化(initWithFrame:方法)时,我正在创建一个 UITextField。我见过很多修改响应链或改变色调的解决方案。但就我而言,我的东西只在这件事上表现正常:
我将 UITextField 的初始化代码放入一个惰性获取器中,并安排了对该方法的延迟调用。
-(UITextField*)textField
if (!_tf)
_tf = [[UITextField alloc] initWithFrame:self.bounds]
// (... more code to set up the text field ...)
[self addSubview:_tf];
return _tf;
然后,(我已经重写了这个方法,所以我决定在这里调用它):
-(void)didMoveToSuperview
[super didMoveToSuperview];
if (self.superview)
// (... other code ...)
[self performSelector:@selector(textField) withObject:nil afterDelay:0.04];
它对我有用。
【讨论】:
以上是关于点击 UITextField 时既不显示键盘也不显示光标的主要内容,如果未能解决你的问题,请参考以下文章