2017-06-28 3 views
0

私のプロジェクトにScrollViewsが2つあり、同時にスクロールする必要があります。 myFriendsScrollViewをスクロールするとうまくいくはずです。最初のScrollViewがスクロールしたときに2番目のScrollviewをスクロールします

私の未完成のコードである:あなたの助けのための

import Foundation 
import UIKit 

class profileController: UIViewController { 

@IBOutlet weak var myFriendsScrollView: UIScrollView! 
@IBOutlet weak var myFriendsNameScrollView: UIScrollView! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    // My Scrollview One 
    let myFriendsScrollViewHeight = self.myFriendsScrollView.frame.height 
    let myFriendsScrollViewWidth = self.myFriendsScrollView.frame.width 

    let myFriendImg1 = UIImageView(frame: CGRect(x: 0, y: 0, width: myFriendsScrollViewWidth/4, height: myFriendsScrollViewHeight)) 
    let myFriendImg2 = UIImageView(frame: CGRect(x: 100 , y: 0, width: myFriendsScrollViewWidth/4, height: myFriendsScrollViewHeight)) 
    let myFriendImg3 = UIImageView(frame: CGRect(x: 200 , y: 0, width: myFriendsScrollViewWidth/4, height: myFriendsScrollViewHeight)) 

    self.myFriendsScrollView.addSubview(myFriendImg1) 
    self.myFriendsScrollView.addSubview(myFriendImg2) 
    self.myFriendsScrollView.addSubview(myFriendImg3) 

    myFriendImg1.image = UIImage(named: "avatar_placeholder"); 
    myFriendImg2.image = UIImage(named: "avatar_placeholder"); 
    myFriendImg3.image = UIImage(named: "avatar_placeholder"); 


    self.myFriendsScrollView.contentSize = CGSize(width: self.myFriendsScrollView.frame.width*2, height: self.myFriendsScrollView.frame.height) 
    self.myFriendsScrollView.isPagingEnabled = true 

    // My Scrollview Two 
    let myFriendsNameScrollViewHeight = self.myFriendsNameScrollView.frame.height 
    let myFriendsNameScrollViewWidth = self.myFriendsNameScrollView.frame.width 

    let myFriendLbl1 = UILabel(frame: CGRect(x: 0, y: 0, width: myFriendsNameScrollViewWidth/4, height: myFriendsNameScrollViewHeight)) 
    let myFriendLbl2 = UILabel(frame: CGRect(x: 100 , y: 0, width: myFriendsNameScrollViewWidth/4, height: myFriendsNameScrollViewHeight)) 
    let myFriendLbl3 = UILabel(frame: CGRect(x: 200 , y: 0, width: myFriendsNameScrollViewWidth/4, height: myFriendsNameScrollViewHeight)) 

    self.myFriendsNameScrollView.addSubview(myFriendLbl1) 
    self.myFriendsNameScrollView.addSubview(myFriendLbl2) 
    self.myFriendsNameScrollView.addSubview(myFriendLbl3) 

    myFriendLbl1.text = "UserName"; 
    myFriendLbl2.text = "UserName"; 
    myFriendLbl3.text = "UserName"; 

    self.myFriendsNameScrollView.contentSize = CGSize(width: self.myFriendsNameScrollView.frame.width*2, height: self.myFriendsNameScrollView.frame.height) 
    self.myFriendsNameScrollView.isPagingEnabled = true 

} 

func scrollViewDidScroll(_ scrollView: UIScrollView) { 
    if scrollView == myFriendsScrollView { 
     myFriendsNameScrollView.contentOffset = scrollView.contentOffset 
    } 
    else { 
     myFriendsScrollView.contentOffset = scrollView.contentOffset 
    } 
} 

} 

感謝。

+0

私は、これはあなたを助けることができると思う: - https://stackoverflow.com/questions/41131986/scrollview-gesture-recognizer -swipe-vertically –

+0

メインスレッドを取り囲むようにしてください。.....下記の答えを参照してください。メインスレッドのUI Oprationを実行してください – Dhiru

答えて

1

それは正しいすでに、私が遊び場でテストしてみたされるデリゲートメソッドの実装のように思えるし、動作するように思われるのを助けることを願っています

func scrollViewDidScroll(_ scrollView: UIScrollView!) { 
      // This will be called every time the user scrolls the scroll view 

     if myFriendsScrollView ==scrollView 
     { 
      let contentOffSet = scrollView.contentOffset 

     //change the Off set of other ScrollView 
    // just surround with main thread 

     DispatchQueue.main.async { 
     secondScrollView.setContentOffset=contentOffSet; 
     } 
    } 



    } 

すばらしいです。

しかし、実際には接続されていないようです。あなたのクラスであることを確認してください:

class profileController: UIViewController, UIScrollViewDelegate { ... } 

viewDidLoadに追加します。

myFriendsScrollView.delegate = self 
myFriendsNameScrollView.delegate = self 
+0

thx、それは素晴らしい動作します。 – j10

0

デリゲートメソッドを使用できます。 とコンテンツを設定し、他のScrollView上のオフセット私はこれがあなたに

関連する問題