2015-06-23 92 views
2

我自動生成一個NSURL基於屏幕上的平移手勢的距離(長篇故事...)。無論如何,我沒有問題生成的網址。 URL動態變化,然後我有一個NSTimer重複每秒一次,它告訴UIWebView重新加載新的URL。Xcode的UIWebView不改變頁面與更改的網址

但是,雖然URL被報告發生了變化,但UIWebView將只顯示發送給它的第一個URL。我也在監控網站本身,它每秒都會收到第一個網址,而不是更新的網址。我的代碼現在很簡單,所以我不確定我做錯了什麼?任何幫助,將不勝感激。

在ViewController.h:

@property (weak, nonatomic) IBOutlet UIWebView *webView; 
@property float slicenumber; 
@property NSURL *dynamicUrl; 

在ViewController.m:

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    NSString *fullURL = @"http://localhost:8080/remote/slicer/slice?view=Green&orientation=Axial&scrollTo=.50&size=native&fmt=png"; 
    NSURL *url = [NSURL URLWithString:fullURL]; 
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url]; 
    [self.webView loadRequest:requestObj]; 
    [self.webView reload]; 
    self.webView.scrollView.scrollEnabled = NO; 
    self.webView.scrollView.bounces = NO; 
    self.slicenumber=.5; 
    [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(UpdateSlice) userInfo:nil repeats:YES];} 

- (IBAction)handlePan:(UIPanGestureRecognizer *)recognizer { 
    CGPoint translation = [recognizer translationInView:self.view]; 
    [recognizer setTranslation:CGPointMake(0, 0) inView:self.view]; 

    self.slicenumber=self.slicenumber+translation.y/350; 
    if (self.slicenumber<0) { 
    self.slicenumber=0; 
    } 
    if (self.slicenumber>1) { 
    self.slicenumber=1; 
    } 
    self.sliceloc.text= [NSString stringWithFormat:@"%.2f",self.slicenumber]; 
    NSString *fullURL2 = [NSString stringWithFormat:@"http://localhost:8080/remote/slicer/slice?view=Green&orientation=Axial&scrollTo=%.2f&size=native&fmt=png",self.slicenumber]; 
    self.dynamicUrl = [[NSURL alloc] initWithString:[fullURL2 stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]]; 
    NSLog(@"urlString = %@",self.dynamicUrl);} 

- (void)UpdateSlice { 
    [self.webView loadRequest:[NSURLRequest requestWithURL:self.dynamicUrl]]; 
    [self.webView reload];} 

非常感謝!讓我知道你是否需要其他信息。

+1

沒有解決你的問題,但在一般注意:你不應該使用這個計時器。只需從「handlePan:」調用「updateSlices」(並且只有當slicenumber改變時) – joern

回答

3

[self.webView reload] - 將重新加載當前頁面。這可能發生在loadRequest完成之前。 嘗試刪除此行。

此外,@ joern的評論是正確的; '事件'是用戶做平移手勢。失去計時器。

+0

完美,非常感謝! – LimitedBacon

+0

什麼是限制你的培根? – Rayfleck

+1

哈哈,不幸的是「無限培根」被採取了。所以我決定成爲一個現實主義者而不是理想主義者。 – LimitedBacon