7

私は 1 つを持っておりUIViewController、その中に 3 を持っていUIWebViewます。プログラムで webViews に左スワイプを追加しました。今はスワイプできますが、3 ページだけで、もう一度繰り返します。currentPage を増やしてこれを webView3 に追加したいのですが、どうすればいいのかわかりません。

ヒントを教えてください。私は本当にこの部分に問題があります!

これが私のコードです:

- (void)viewDidLoad
{
[super viewDidLoad];
NSLog(@"test view");

NSURL *url = [NSURL fileURLWithPath:[ [ NSBundle mainBundle ] pathForResource: @"Name/Name1" ofType:@"html" ]];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
 [webView2 loadRequest:request];
 [webView2 bringToFront];

  NSURL *url = [NSURL fileURLWithPath:[ [ NSBundle mainBundle ] pathForResource: 
@"Name/Name2" ofType:@"html" ]];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
 [webView3 loadRequest:request]; 

UISwipeGestureRecognizer *swipeLeft = [[UISwipeGestureRecognizer alloc]  
initWithTarget:self action:@selector(swipeLeftAction:)];
swipeLeft.direction = UISwipeGestureRecognizerDirectionLeft;
swipeLeft.delegate = self;
[self.view addGestureRecognizer:swipeLeft];
}

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer 
 shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer 
*)otherGestureRecognizer
{
return YES;
}

currentPage は整数で、最初は 0 です。私の質問は、現在のページを webView3 に追加して、スワイプするとページが増えるようにするにはどうすればよいですか?

 - (void)swipeLeftAction:(id)ignored
 {
NSLog(@"Swipe Left");
UIWebView *temp = webView2 ;
webView2 = webView3;
webView3 = webView;
webView = temp;

[webView2 bringToFront];
currentPage++;
 }

前もって感謝します!

****編集:**

この現在のページはどの webView にも接続されていません。私の webView でこの増加を得るにはどうすればよいですか?**

4

1 に答える 1

0

この投稿の情報(UIGestureRecognizerはUIWebViewで機能しますか?)に基づくと、ジェスチャレコグナイザーとWebビューが常にうまく機能するとは限らないようです。これは、Webビュー自体のジェスチャレコグナイザーが原因です。おそらく最良の方法は、Webビュー内にリンクを追加することです。このリンクに触れると、独自のスキームを使用してcurrentPageをインクリメントします。

-(BOOL) webView:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest *)inRequest navigationType:(UIWebViewNavigationType)inType {
  if ( [[[inRequest URL] absoluteString] hasPrefix:@"mySchemeIncrementPage:"] ) {
    currentPage++;
    NSLog(@"CURRENT PAGE COUNT: %i", currentPage);
    return NO;
  }
}
于 2012-11-08T19:20:55.470 に答える