当用户点击GO时,如何解除ModalViewController?

时间:2010-10-22 19:17:21

标签: iphone delegates uiwebview modalviewcontroller dismiss

我有一个视图和一个按钮。当按下按钮时,我提出了一个模态视图控制器,它有一个uiwebview,顶部有一个导航栏。硬编码的uiwebview显示登录提示。一旦用户进入并输入正确的登录凭证并点击键盘上的GO,我不仅需要它来验证我进入服务器,还要关闭模态视图控制器。

请注意,我输入数据的文本字段是uiwebview中加载的网站的一部分...

当我点击进入现在,网页进行身份验证,一切都很好,但我只需要一种方法来配合

[self dismissModalViewControllerAnimated:YES];

命令当他们点击GO ...有什么想法吗?

由于

修改

以下是我在loginView中实现的代码:

- (void)viewDidLoad {
    [super viewDidLoad];
    NSURL *url = [[NSURL alloc] initWithString: @"http://website"];
    NSURLRequest *request = [[NSURLRequest alloc] initWithURL: url];
    [webView loadRequest: request];

    [request release];
    [url release];


}

-(BOOL) textFieldShouldReturn:(UITextField *)textField{


        [self dismissModalViewControllerAnimated:YES];

    return YES;
}

-(IBAction) done{

    [self dismissModalViewControllerAnimated:YES];
}

2 个答案:

答案 0 :(得分:1)

首先确定成功登录时网页带您到达的网址,假设它是

http://website/logedin
。实施UIWebViewDelegate,并检测何时向该地址发出请求:

- (BOOL)webView:(UIWebView *)wv shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
  if ([[request.URL absoluteString] isEqualToString:@"http://website/logedin"]) {
    [self dismissModalViewControllerAnimated:YES];
    return NO;
  }
  return YES;
}

答案 1 :(得分:0)

您可以尝试使用以下示例代码;


@interface WebViewController : UIViewController  {
}

UIWebViewDelegate有很少的委托方法,你必须在WebViewController.m中实现它(例如)。


-(void) webViewDidStartLoad:(UIWebView *)webView{
}
-(void) webViewDidFinishLoad:(UIWebView *)webView{
    -(void) webViewDidFinishLoad:(UIWebView *)webView
}
-(void) webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{
}
在此之前,您必须从Interface Builder设置UIWebView的委托。