我有一个简单的iOS应用程序登录系统,当用户将焦点设置为密码UITextField
时,我会为我的完整视图设置动画并将其移动到用户的视口中,以便用户可以看到密码字段。以下是我如何做到这一点的例子:
-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
if(textField == self.txtPassword)
{
CGRect newFrame = self.view.frame;
newFrame.origin.y -= 60;
[UIView animateWithDuration:1.0 animations:^{
self.view.frame = newFrame;
}];
}
return YES;
}
-(BOOL)textFieldShouldEndEditing:(UITextField *)textField
{
if(textField == self.txtPassword)
{
CGRect newFrame = self.view.frame;
newFrame.origin.y += 60;
[UIView animateWithDuration:0.5 animations:^{
self.view.frame = newFrame;
}];
}
return YES;
}
现在我的问题是如果用户退出应用程序(不关闭)然后恢复它,我的视图恢复正常但文本字段仍然集中在密码框,因此开始执行的第一个动画将向下移动到顶部。我该怎么解决这个问题?
答案 0 :(得分:1)
试试这个
- (void)applicationWillResignActive:(UIApplication *)application {
// Post notification from here to handle
if ([urTextField isFirstResponder]) {
[urTextField resignFirstResponder];
}
}
或者按照本教程的说明通过通知中心访问urtextfield&然后解雇那里
http://code.tutsplus.com/tutorials/ios-sdk-nsnotification--mobile-10619
答案 1 :(得分:1)
简单的解决方案,将在应用程序辞职时删除键盘。 从用户体验的角度来看 - 用户离开了应用程序,应用程序被“清除”。
- (void)applicationWillResignActive:(UIApplication *)application {
[self.view endEditing:YES];
CGRect newFrame = self.view.frame;
newFrame.origin.y += 60;
self.view.frame = newFrame;
}