当我按回车键时,我想关闭我的键盘。
我试着把按钮放在视图的背面。
但是我如何通过按回车键来完成这项工作呢?
发布于 2012-02-21 18:37:47
-(BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
别忘了添加委托UITextFieldDelegate
发布于 2012-02-21 18:46:54
我假设你说的是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
协议缺少与textFieldShouldReturn:
方法相同的功能,大概是因为我们不应该期望Return键是用户希望停止编辑多行文本输入对话框中的文本的信号(毕竟,用户可能希望通过按Return键来插入换行符)。
然而,有几种方法可以绕过UITextView
无法使用键盘辞去第一响应者的职位。通常的方法是,当UITextView
显示弹出键盘时,在导航栏中放置一个完成按钮。当点击时,此按钮要求文本视图辞去第一响应者的职务,然后退出键盘。
但是,根据您规划界面的方式,您可能希望在用户在UITextView
之外点击时UITextView
退出。要做到这一点,您需要子类UIView
来接受触摸,然后指示文本视图在用户在视图外部点击时辞职。
创建一个新类,
#import <UIKit/UIKit.h>
@interface CustomView : UIView {
IBOutlet UITextView *textView;
}
@end
然后,在实现中,实现touchesEnded:withEvent:
方法并要求UITextView
辞去first responder的职务。
#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检查器,并将nib文件中的视图类型更改为您的CustomView
而不是默认的UIView
类。然后在Connections Inspector中,将textView
插座拖到UITextView
上。这样做之后,一旦您重新构建了您的应用程序,在活动UI元素之外的触摸现在将取消键盘。但是请注意,如果您子类化的UIView
位于其他UI元素的“后面”,这些元素将在到达UIView层之前拦截这些接触。因此,虽然这个解决方案很优雅,但它只能在某些情况下使用。在许多情况下,您将不得不求助于暴力方法,即在导航栏中添加一个完成按钮来关闭键盘。
发布于 2012-02-21 18:38:04
我希望你已经做过UIViewController <UITextFieldDelegate>
和yourTextField.delegate=self
;
然后在委托方法中
- (BOOL)textFieldShouldReturn:(UITextField *)textField;
{
[textField resignFirstResponder];
return YES;
}
https://stackoverflow.com/questions/9375969
复制相似问题