Xcode UIWebView不更改带有更改URL的页面

时间:2015-06-23 14:58:50

标签: ios objective-c xcode uiwebview

我会根据屏幕上的平移手势的距离自动生成NSURL(长篇故事......)。无论如何,我没有问题生成URL。 URL动态更改,然后我有一个NSTimer,每秒重复一次,告诉UIWebView使用新URL重新加载。

但是,虽然报告URL正在更改,但UIWebView仅显示发送给它的第一个URL。我也在监控网站本身,它每秒都会收到第一个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 个答案:

答案 0 :(得分:3)

[self.webView reload] - 将重新加载当前页面。这可能发生在loadRequest完成之前。 尝试删除此行。

另外,@ joern的评论是正确的; '事件'是用户做出平移手势。失去计时器。