ios / objective-c:按钮动作与关闭键盘的交互

时间:2015-12-05 11:36:39

标签: ios objective-c uibutton dismiss

对于使用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];
}

1 个答案:

答案 0 :(得分:0)

你可以用touchesBegan方法检查你的触摸,然后可以确定是否触摸了按钮......就像那样

books.published_date