Xcode UIWebView 未更改页面已更改 URL
Xcode UIWebView not changing page with changed URL
我根据屏幕上平移手势的距离自动生成 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];}
非常感谢!如果您需要任何其他信息,请告诉我。
[self.webView reload]
- 将重新加载 当前 页面。这可能发生在 loadRequest 完成之前。
尝试删除此行。
此外,@joern 的评论是正确的; 'event' 是用户做出平移手势。失去计时器。
我根据屏幕上平移手势的距离自动生成 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];}
非常感谢!如果您需要任何其他信息,请告诉我。
[self.webView reload]
- 将重新加载 当前 页面。这可能发生在 loadRequest 完成之前。
尝试删除此行。
此外,@joern 的评论是正确的; 'event' 是用户做出平移手势。失去计时器。