我有一個scrollView,裏面有子視圖。我想要在子視圖之外進行任何觸摸,以使scrollview像在任何其他情況下一樣滾動。但是當觸摸位於子視圖內時,我不想要滾動來註冊(所以我可以使用該觸摸來拖動)。IOS:如何僅在觸摸子視圖外部時滾動scrollview滾動?
class ViewController: UIViewController {
@IBOutlet weak var scrollView: UIScrollView!
override func viewDidLoad() {
super.viewDidLoad()
scrollView.backgroundColor = UIColor.red
scrollView.contentSize = CGSize(width: 1000, height: 1000)
let view = UIView(frame: CGRect(x: 600, y: 600, width: 200, height: 200))
view.backgroundColor = UIColor.blue
scrollView.addSubview(view)
}
}
到目前爲止,我已經嘗試了許多東西,使這項工作。在爲子視圖和滾動視圖製作海關課程方面取得了一些成功。在這些課程我覆蓋了觸摸方式,像這樣:
class MyScrollView: UIScrollView {
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
self.isScrollEnabled = true
}
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
self.isScrollEnabled = true
}
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
self.isScrollEnabled = true
}
}
對於滾動型customclass我轉身滾動,然後在子視圖自定義類我把它關掉。這可行,但有一個主要問題,即在isScrollEnabled更改之前,第一次觸摸仍然繼續。這意味着當滾動關閉並且您想要滾動時,您必須在框外觸摸並且沒有任何反應,然後執行相同的觸摸並開始觸摸。
我所尋求的是實現對觸摸是,改變滾動設置,然後在相同的電阻觸摸依然滾動或不滾動依賴於設置是什麼辦法。
乾杯,任何幫助表示讚賞。
這確實回答我問,但實際上並沒有解決我的問題的問題。我一直在尋找(並在問題沒有提到)是讓藍景再回應我的觸摸,所以我可以拖在那裏。當我加入panGesture它停止了滾動,但它不會讓我將其拖放到藍色視圖中選擇的東西。我會怎麼做呢? –
@LewisBlack好吧,所以你有藍圖內的子視圖,對吧?您可以將泛識別器添加到這些子視圖中。它們的優先級高於blueView的平移手勢。 – alexburtnik