关闭键盘 - iOS 7中的多个UITextFields [英] Dismiss The Keyboard - Multiple UITextFields in iOS 7
问题描述
我有3个问题。
1。)因为我有多个uitextfields,我是否必须设置每个用自己的resignFirstResponder声明? 2.)我会用哪种方法做到这一点? 3.)我的语法是否适合辞职第一响应者?
当用户点击字段时,如果我可以解除键盘,那将是非常好的点击返回键!
我知道之前已经被问过并回答过,但说实话,我仍然有点困惑。
我正在使用故事板,使用XCode 5和iOS 7.
====== =======================
.h文件
@interface ViewController:UIViewController< UITextFieldDelegate,UITableViewDelegate,UITableViewDataSource>
@property(弱,非原子)IBOutlet UITextField * danceDate;
@property(弱,非原子)IBOutlet UITextField * dancePlace;
@property(弱,非原子)IBOutlet UITextField * danceTerminal;
@property(弱,非原子)IBOutlet UITextField * danceGate;
.m文件
#importViewController.h
@interface ViewController()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
[self retrieveFromParse];
self.tableView.dataSource = self;
self.tableView.delegate = self;
self.navigationItem.rightBarButtonItem = self.editButtonItem;
// SET DELEGATE HERE
//
//如果我取消注释其中一行,我会收到错误。
//
// _dancePlace.delegate = self;
// dancePlace.delegate = self;
// dancePlace = self;
}
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
返回YES;
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
返回YES;
}
辞去textField:
所有textField.delegate都应设置为ViewController的对象。
然后实现下面的委托方法。
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
返回YES;
}
要点击视图关闭键盘:
添加点按对ViewController.view的手势如下:
//声明一个属性来存储当前的响应者
@property( nonatomic,assign)id currentResponder;
//在viewDidLoad中:
UITapGestureRecognizer * singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(resignOnTap :)];
[singleTap setNumberOfTapsRequired:1];
[singleTap setNumberOfTouchesRequired:1];
[self.view addGestureRecognizer:singleTap];
[singleTap release];
//实现以下委托方法:
- (void)textFieldDidBeginEditing:(UITextField *)textField {
self.currentResponder = textField;
}
//实施resignOnTap:
- (无效)resignOnTap:(id)iSender {
[self.currentResponder resignFirstResponder];
}
//丢失了;通话结束后 - > [self.currentResponder resignFirstResponder]
//也在textFieldDidEndEditing中设置self.currentResponder = nil;
below you'll find my .h & .m files for my primary viewcontroller.
I have 3 questions.
1.) Because I have multiple uitextfields, do I have to set each with their own resignFirstResponder statement ? and 2.) where would I do that, in what method ? 3.) Is my syntax right for resigning the first responder ?
Also it would be really nice if I could dismiss the keyboard when the user clicks out of the field NOT on hitting the return key!
I know this has been asked and answered before, but to be honest with you i'm still a little confused as to what goes where.
I'm using storyboards, with XCode 5, and iOS 7.
=============================
.h file
@interface ViewController : UIViewController <UITextFieldDelegate,UITableViewDelegate,UITableViewDataSource>
@property (weak, nonatomic) IBOutlet UITextField *danceDate;
@property (weak, nonatomic) IBOutlet UITextField *dancePlace;
@property (weak, nonatomic) IBOutlet UITextField *danceTerminal;
@property (weak, nonatomic) IBOutlet UITextField *danceGate;
.m file
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
[self retrieveFromParse];
self.tableView.dataSource = self;
self.tableView.delegate = self;
self.navigationItem.rightBarButtonItem = self.editButtonItem;
// SET DELEGATE HERE
//
// if I uncomment 1 of these lines, i'll get an error.
//
// _dancePlace.delegate = self;
// dancePlace.delegate = self;
// dancePlace = self;
}
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
}
-(BOOL) textFieldShouldReturn: (UITextField *) textField
{
[textField resignFirstResponder];
return YES;
}
-(BOOL) textFieldShouldReturn: (UITextField *) textField
{
return YES;
}
Resigning the textField: All your textField.delegate should be set as ViewController's object. And then implement the below delegate method.
-(BOOL) textFieldShouldReturn: (UITextField *) textField {
[textField resignFirstResponder];
return YES;
}
To dismiss Keyboard on tap of the View: Add a Tap gesture to your ViewController.view as follows:
//declare a property to store your current responder
@property (nonatomic, assign) id currentResponder;
//in viewDidLoad:
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(resignOnTap:)];
[singleTap setNumberOfTapsRequired:1];
[singleTap setNumberOfTouchesRequired:1];
[self.view addGestureRecognizer:singleTap];
[singleTap release];
//Implement the below delegate method:
- (void)textFieldDidBeginEditing:(UITextField *)textField {
self.currentResponder = textField;
}
//Implement resignOnTap:
- (void)resignOnTap:(id)iSender {
[self.currentResponder resignFirstResponder];
}
// was missing ; after the call --> [self.currentResponder resignFirstResponder]
// also in textFieldDidEndEditing set self.currentResponder = nil;
这篇关于关闭键盘 - iOS 7中的多个UITextFields的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!