我有一个名为LoginViewController的UIViewController。 UIViewController有两个UITextField,用户名和密码。当第一次启动应用程序并且钥匙串中没有任何凭证时,这将显示为modalViewController。当用户点击登录按钮时,呈现的键盘被解除。代码是:modalViewController问题与UITextField第一响应者
- (IBAction) loginClick: (UIButton *) sender
{
if ([username isFirstResponder]){
[username resignFirstResponder];
}
if ([password isFirstResponder]){
[password resignFirstResponder];
}
[RKObjectManager sharedManager].client.username = username.text;
[RKObjectManager sharedManager].client.password = password.text;
[progressLock lock];
[progressLock unlockWithCondition:0];
[HUD showWhileExecuting:@selector(myTask) onTarget:self withObject:nil animated:YES];
[[RKObjectManager sharedManager] loadObjectsAtResourcePath:@"/account/verify.json" objectClass:[Login class] delegate: self];
}
现在在应用程序中有一个选项按钮。当这是点击它会呈现一个modalViewController,它有一个注销按钮。点击这个注销按钮将再次呈现LoginViewController。代码是:
- (IBAction) logout:(id)sender
{
NSUserDefaults *standardDefaults = [NSUserDefaults standardUserDefaults];
NSString * username = [standardDefaults stringForKey:@"kApplicationUserNameKey"];
NSError * error = nil;
[standardDefaults removeObjectForKey:@"kApplicationUserNameKey"];
[SFHFKeychainUtils deleteItemForUsername:username andServiceName:@"convore" error:&error];
LoginViewController* lvc = [[LoginViewController alloc] init];
lvc.delegate = self;
[self.mgvc.groups removeAllObjects];
[self.mgvc.table reloadData];
Topic * topic = [Topic object];
topic.tid = [NSNumber numberWithInt:-2];
self.mgvc.detailViewController.topic = topic;
self.mgvc.detailViewController.detailItem = topic.tid;
[self presentModalViewController:lvc animated:YES];
[lvc release];
}
奇怪的是,我似乎无法解雇键盘,当我点击登录按钮这次。为什么是这样?是否因为从现在开始,我正在使用modalviewcontroller显示LoginViewController?我如何解决这个奇怪的问题?
这是一个好主意,所以你的意思是[self dismissModalViewControllerAnimated:YES]; [self presentModalViewController:lvc animated:YES]; ??我试过了,它不起作用..也许这不是它应该的方式 – adit 2011-06-08 15:54:24
你应该尝试从模态视图之外做到这一点,以产生影响。查看我的编辑,特别是我添加的选项3。 – sergio 2011-06-08 15:55:56
我怎样才能从外面做到这一点?代表你的意思? – adit 2011-06-08 15:57:11