我会根据屏幕上的平移手势的距离自动生成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];}
非常感谢!如果您需要任何其他信息,请与我们联系。
答案 0 :(得分:3)
[self.webView reload]
- 将重新加载当前页面。这可能发生在loadRequest完成之前。
尝试删除此行。
另外,@ joern的评论是正确的; '事件'是用户做出平移手势。失去计时器。