好的我做了一个简单的视图控制器,它将UIWebView手动添加到自己,就像你试图做的一样。另外它是一个私人的UIWebView。我创建了一个简单的按钮,它将alert()
传递给UIWebView并且它每次都有效,所以这里是整个代码,以便您可以看到发生了什么。
.h文件中
#import <UIKit/UIKit.h>
@interface SOFViewController : UIViewController
// This is linked as action thru nib.
- (IBAction)hitMe:(UIButton *)sender;
@end
.m文件
这里请注意,在这里我先调用JavaScript到这是在ViewDidAppear
web视图的位置,其他前功能将导致首次在模拟器中启动时出现不良行为。我正在使用Xcode 4.3
#import "SOFViewController.h"
@interface SOFViewController()
{
int idNumber;
UIWebView *webViewMain;
}
@end
@implementation SOFViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
webViewMain = [[UIWebView alloc] initWithFrame:CGRectMake(50.0, 50.0, 50.0, 50.0)];
[self.view addSubview:webViewMain];
}
-(void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
idNumber = idNumber + 1;
NSString * js = [NSString stringWithFormat:@"alert('%d');",idNumber];
[webViewMain stringByEvaluatingJavaScriptFromString:js];
}
- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}
- (IBAction)hitMe:(UIButton *)sender {
idNumber = idNumber + 1;
NSString * js = [NSString stringWithFormat:@"alert('%d');",idNumber];
[webViewMain stringByEvaluatingJavaScriptFromString:js];
}
@end
希望这有一些帮助。
您确定isNumber在两次调用之间发生变化吗?检查以确定您的脚本正确处理了不同的idNumbers。尝试将你的JavaScript放在一个文件中,并在你的普通浏览器中运行它并运行它,看看你在两次调用之间得到了什么。同时检查你从哪里调用函数。 –
由日志idNumber更改为100%,也当我在浏览器上运行它的作品,因为它应该工作 – vadim