对于使用Storyboard的登录屏幕,我有一个登录按钮。然而,当用户触摸按钮时,经常发生的事情是键盘被解除,视图向下移动然后用户必须再次点击以触发按钮的动作方法。
我认为该问题可能与用于解除键盘的方法self.view endEditing:YES
有关。或者可能是事件附加到按钮的操作方法Touch Up Inside
。或者可能是使视图根据您所在的字段移动的代码(如下所示)。
任何人都可以建议正确的方法来做到这一点......当用户触摸按钮时,IE会在第一时间调用动作方法。
如果用户点击按钮以外的其他位置或在其他文本字段内,我仍然希望键盘被解除。
感谢您的任何建议。
//method dismissing keyboard
- (void) tapped
{
[self.view endEditing:YES];
}
按钮操作方法的事件为"Touch Up Inside"
此外,我正在使用以下代码根据您所在的文本字段根据需要上下移动视图:
-(void)textFieldDidBeginEditing:(UITextField *)sender
{
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:.3];
[UIView setAnimationBeginsFromCurrentState:TRUE];
if ([sender isEqual:_username]) {
self.view.frame = CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y -70., self.view.frame.size.width, self.view.frame.size.height);
}
else if([sender isEqual:_password]) {
self.view.frame = CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y -90., self.view.frame.size.width, self.view.frame.size.height);
}
else if([sender isEqual:_Email]) {
self.view.frame = CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y -110., self.view.frame.size.width, self.view.frame.size.height);
}
[UIView commitAnimations];
}
-(void)textFieldDidEndEditing:(UITextField *)sender
{
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:.3];
[UIView setAnimationBeginsFromCurrentState:TRUE];
if ([sender isEqual:_username]) {
self.view.frame = CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y +70., self.view.frame.size.width, self.view.frame.size.height);
}
else if ([sender isEqual:_password]) {
self.view.frame = CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y +90., self.view.frame.size.width, self.view.frame.size.height);
}
else if ([sender isEqual:_Email]) {
self.view.frame = CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y +110., self.view.frame.size.width, self.view.frame.size.height);
}
[UIView commitAnimations];
}
答案 0 :(得分:0)
你可以用touchesBegan方法检查你的触摸,然后可以确定是否触摸了按钮......就像那样
books.published_date