我想知道当用户触摸UITextField
之外时如何使键盘消失。
#1楼
检查一下,这将是最简单的方法,
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
[self.view endEditing:YES];// this will do the trick
}
要么
该库将处理包括滚动条自动滚动,点击空间以隐藏键盘等...
https://github.com/michaeltyson/TPKeyboardAvoiding
#2楼
只是在这里添加我的版本如何在外部触摸时解除键盘。
viewDidLoad中:
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];
[self.view addGestureRecognizer:singleTap];
任何地方:
-(void)handleSingleTap:(UITapGestureRecognizer *)sender{
[textFieldName resignFirstResponder];
puts("Dismissed the keyboard");
}
#3楼
我捣乱了几个答案。
使用在viewDidLoad:
期间初始化的ivar viewDidLoad:
UIGestureRecognizer *tapper;
- (void)viewDidLoad
{
[super viewDidLoad];
tapper = [[UITapGestureRecognizer alloc]
initWithTarget:self action:@selector(handleSingleTap:)];
tapper.cancelsTouchesInView = NO;
[self.view addGestureRecognizer:tapper];
}
取消当前正在编辑的内容:
- (void)handleSingleTap:(UITapGestureRecognizer *) sender
{
[self.view endEditing:YES];
}
#4楼
如果我给你的权利,你要辞职键盘诡计敲击之外textfield
,但你没有你的参考textfield
。
试试这个;
- 拿全局textField,我们称之为
reftextField
现在在
textFieldDidBeginEditing
中将引用的文本字段设置为- (void) textFieldDidBeginEditing:(UITextField *)textField{ reftextField = textField; }
现在您可以愉快地使用任何按钮时钟,(在开始编辑时添加透明按钮推荐)
- (void)dismissKeyboard { [reftextField resignFirstResponder]; }
或者对于辞职完成按钮试试这个。
//for resigning on done button - (BOOL) textFieldShouldReturn:(UITextField *)textField{ [textField resignFirstResponder]; return YES; }
#5楼
这有效
在这个例子中,aTextField是唯一的UITextField ....如果有其他人或UITextViews,还有一点要做。
// YourViewController.h
// ...
@interface YourViewController : UIViewController /* some subclass of UIViewController */ <UITextFieldDelegate> // <-- add this protocol
// ...
@end
// YourViewController.m
@interface YourViewController ()
@property (nonatomic, strong, readonly) UITapGestureRecognizer *singleTapRecognizer;
@end
// ...
@implementation
@synthesize singleTapRecognizer = _singleTapRecognizer;
// ...
- (void)viewDidLoad
{
[super viewDidLoad];
// your other init code here
[self.view addGestureRecognizer:self.singleTapRecognizer];
{
- (UITapGestureRecognizer *)singleTapRecognizer
{
if (nil == _singleTapRecognizer) {
_singleTapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapToDismissKeyboard:)];
_singleTapRecognizer.cancelsTouchesInView = NO; // absolutely required, otherwise "tap" eats events.
}
return _singleTapRecognizer;
}
// Something inside this VC's view was tapped (except the navbar/toolbar)
- (void)singleTapToDismissKeyboard:(UITapGestureRecognizer *)sender
{
NSLog(@"singleTap");
[self hideKeyboard:sender];
}
// When the "Return" key is pressed on the on-screen keyboard, hide the keyboard.
// for protocol UITextFieldDelegate
- (BOOL)textFieldShouldReturn:(UITextField*)textField
{
NSLog(@"Re