我怎样才能closures键盘上的input按键

当我按下RETURN键时,我想closures我的键盘。

我已经试过把button放在背面。

但是,我怎样才能通过按RETURN键呢?

-(BOOL)textFieldShouldReturn:(UITextField *)textField { [textField resignFirstResponder]; return YES; } 

不要忘记添加委托UITextFieldDelegate

我希望你已经完成了UIViewController <UITextFieldDelegate>yourTextField.delegate=self ;

然后在委托方法中

 - (BOOL)textFieldShouldReturn:(UITextField *)textField; { [textField resignFirstResponder]; return YES; } 

我假设你说的是UITextField而不是UITextView因为你的问题不是很清楚? 如果是的话确保你的类在接口文件中被标记为UITextFieldDelegate

 @interface MyController: UIViewController <UITextFieldDelegate> { UITextField *activeTextField; // ...remainder of code not show ... } 

然后你应该实现两个委托方法如下,

 - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { activeTextField = textField;! return YES; } - (BOOL)textFieldShouldReturn:(UITextField *)textField { activeTextField = nil; [textField resignFirstResponder]; return YES; } 

但是,如果你使用的是UITextView那么情况会更复杂一些。 UITextViewDelegate协议缺less与textFieldShouldReturn:方法等价的方法,大概是因为我们不应该期望Return键是用户希望在多行文本input对话框中停止编辑文本的信号(毕竟,用户可能想通过按回车插入换行符)。

但是,有几种方法可以解决UITextView无法使用键盘作为第一响应者的问题。 通常的方法是当UITextView显示popup式键盘时,在导航栏中放置完成button。 点击时,该button会要求文本视图作为第一响应者辞职,然后closures键盘。

然而,根据你的界面计划,你可能希望UITextView在用户在UITextView本身之外进行切换时重新UITextView 。 要做到这一点,你可以UIView接受触摸,然后指示文本视图在用户点击视图本身之外时退出。

创build一个新的类,

 #import <UIKit/UIKit.h> @interface CustomView : UIView { IBOutlet UITextView *textView; } @end 

然后,在实现中,实现touchesEnded:withEvent:方法,并要求UITextView作为第一响应者辞职。

 #import "CustomView.h" @implementation CustomView - (id)initWithFrame:(CGRect)frame { if (self = [super initWithFrame:frame]) { // Initialization code } return self; } - (void) awakeFromNib { self.multipleTouchEnabled = YES; } - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { NSLog(@"touches began count %d, %@", [touches count], touches); [textView resignFirstResponder]; [self.nextResponder touchesEnded:touches withEvent:event]; } @end 

一旦你添加了这个类,你需要保存所有的修改,然后进入Interface Builder并点击你的视图。 打开Utility pabel中的Identity inspector,并将nib文件中视图的types更改为CustomView而不是默认的UIView类。 然后在Connections Inspector中,将textView出口拖到UITextView 。 这样做后,一旦你重build你的应用程序,触及活跃的用户界面元素现在将closures键盘。 但是请注意,如果您正在进行子类化的UIView是其他UI元素的“后面”,这些元素将在到达UIView层之前拦截触摸。 所以虽然这个解决scheme是优雅的,但它只能在某些情况下使用。 在许多情况下,您将不得不求助于在导航栏中添加“完成”button以closures键盘的蛮力方法。

确保您的视图控制器类是您的UITextField的委托,然后使用该类中的委托方法:

 #pragma mark - Delegate Methods - (BOOL)textFieldShouldReturn:(UITextField *)textField{ // Dismiss the keyboard when the Return key is pressed. [textField resignFirstResponder]; return YES; }