2013-12-10 63 views
2

我正在製作一個簡單的webView iOS 7應用程序,我希望用戶能夠向左或向右滑動以在網頁上向前或向後滑動。就像你可以在iOS中使用Safari一樣。iOS webView向左或向右滑動瀏覽

我認爲它被稱爲分頁 - 但我不知道如何使用它。我怎樣才能實現這個?我是一個小菜,所以如果你能一步一步告訴我,我會很感激。

感謝

+0

什麼是WEBVIEW HTML或PDF中的內容? –

+0

考慮使用'UINavigationController'。它已經支持從左到右滑動,所以你只需要增加對相反方向滑動的支持。這個答案應該讓你開始:http://stackoverflow.com/questions/5891432/swipe-back-and-forward-on-navigationcontroller – Macondo2Seattle

回答

9

我工作的一個類似的功能在我的應用程序,這是我到目前爲止已經想通了 - 我還沒有完成,但這裏的上手方式。

首先,我假設你正在開發針對iOS 7只 - 而這是完全可能建立本作的iOS 6,你可以採取幾個整齊的快捷方式,如果您只爲7

發展

前進/後退手勢使用​​進行處理。您將其添加到Web視圖中,如下所示:

UIScreenEdgePanGestureRecognizer *bezelSwipeGestureRecognizer = [[UIScreenEdgePanGestureRecognizer alloc] initWithTarget:self action:@selector(swipeBack:)]; 
bezelSwipeGestureRecognizer.edges = UIRectEdgeLeft; 
bezelSwipeGestureRecognizer.delegate = self; 
[self.view addGestureRecognizer:bezelSwipeGestureRecognizer]; 

UIView *invisibleScrollPreventer = [UIView new]; 
invisibleScrollPreventer.frame = CGRectMake(0, 0, 10, self.view.frame.size.height); 
[self.view addSubview:invisibleScrollPreventer]; 

這會添加反向滑動手勢。棘手的部分是,invisibleScrollPreventer - 這是一個不完美的黑客攻擊,但它可以避免滾動你的web視圖,而不是做後退動作。 (有可能是一個更好的方式來處理,但是這是我目前的解決方案。)

在你swipeBack:方法,你會做類似如下:

-(void)swipeBack:(UIScreenEdgePanGestureRecognizer *)recognizer 
{ 
    if (recognizer.state == UIGestureRecognizerStateEnded) { 
     if (_webView.canGoBack) { 
      [_webView goBack]; 
     } 
    } 
} 

你會做這些相同的事情將goForward:方法添加到您的網頁視圖中。

real就像在iOS 7中的Safari中一樣,獲取您要返回(或轉發)顯示在屏幕上的網頁會在屏幕上向後或向前滑動顯示。我不是100 %確定如何做到這一點(我還沒有在我的應用程序中構建該功能,但我很快就會完成),我猜這是一個應用了一些變暗的iOS 7 snapshotView

根據你選擇建立這個的方式,你可能也想看看custom navigation transitions in iOS 7。我不知道這是否是這個問題所需要的,但可能是這樣。

祝你好運!

+0

好的謝謝你!我應該知道這一點,但我在哪裏放這些代碼片段? .m或.h? – jryankennedy

+0

所有的代碼都會放在你的.m文件中 - 如果你對.h和.m文件感到困惑,請查看這個Stack Overflow問題:http://stackoverflow.com/questions/2619048/concise-description -of-how-h-and-m-files-interact-in-objective-c – bryanjclark

+0

代表是什麼? –

1
override func viewDidLoad() { 
    super.viewDidLoad() 
    let url = NSURL(string: "https://www.whatever.com") 
    let requestObj = NSURLRequest(URL: url!) 
    myWebView.loadRequest(requestObj) 



    //swipe left or right to go back or foward 
    var leftSwipe = UISwipeGestureRecognizer(target: self, action: Selector("handleSwipes:")) 
    var rightSwipe = UISwipeGestureRecognizer(target: self, action: Selector("handleSwipes:")) 

    leftSwipe.direction = .Left 
    rightSwipe.direction = .Right 

    view.addGestureRecognizer(leftSwipe) 
    view.addGestureRecognizer(rightSwipe) 


} 



//swipe left to go forward 
func handleSwipes(sender:UISwipeGestureRecognizer) { 
    if (sender.direction == .Left) { 
     myWebView.goForward() 

    } 
//swipe right to go backward 
    if (sender.direction == .Right) { 
     myWebView.goBack() 

    } 


} 
+1

用''''在NSURL(string:)'構造函數中替換引號字符(它將修復代碼高亮顯示) – werediver

+1

歡迎來到Stack Overflow!儘管此代碼可能回答此問題,但最好包含一些_context_, _how_它的工作原理和_when_使用它。從長遠來看,僅有代碼的答案是沒有用的。 –

+1

代碼自己在說話) –