我使用UITableView进行用户/密码登录控制。现在它是视图上唯一的控件,还有一个登录按钮。当我点击内部时,文本编辑内容变为活动状态,键盘弹出,我可以键入。但是没有办法停止编辑。我想在我的UIView的白色区域外面点击,以便从我的UITableVIew中的文本编辑器中取出焦点,键盘再次变得不可见。
我该怎么做?
答案 0 :(得分:5)
您可以添加alpha通道等于零的按钮。您的登录名和密码字段后面有。按以下方式将操作设置为此按钮:
-(void)hideKeyboard:(id)sender
{
[self.username resignFirstResponder];
[self.password resignFirstResponder];
}
答案 1 :(得分:3)
在viewDidLoad
中,让您的视图控制器收听键盘通知并创建一个点击识别器,它将接收您的tableView之外的所有事件:
- (void)viewDidLoad
{
[super viewDidLoad];
...
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc addObserver:self selector:@selector(keyboardWillShow:) name:
UIKeyboardWillShowNotification object:nil];
[nc addObserver:self selector:@selector(keyboardWillHide:) name:
UIKeyboardWillHideNotification object:nil];
tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissKeyboard:)];
...
}
然后在键盘的通知方法中添加和删除视图中的手势识别器。
//add gesture recognizer when keyboard appears
-(void)keyboardWillShow:(NSNotification *) note {
[self.view addGestureRecognizer:tapRecognizer];
}
//remove it when keyboard disappears
-(void)keyboardWillHide:(NSNotification *) note
{
[self.view removeGestureRecognizer:tapRecognizer];
}
在手势识别器的操作方法中,您将所有第一响应者辞职以解除键盘:
-(IBAction)dismissKeyboard:(id)sender
{
//this removes ALL firstResponder from view
[self.view endEditing:TRUE];
}
不要忘记在某个时候结束听键盘通知:
[[NSNotificationCenter defaultCenter] removeObserver:self];
答案 2 :(得分:1)
添加单击GestureRecognizer并在已调用的函数中重新调整键盘
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(resignKeyBoard)];
[tap setNumberOfTapsRequired:1];
[self.view addGestureRecognizer:tap];