Saya memiliki masalah serupa dengan UIStackView (tetapi bisa jadi tampilan lain). Konfigurasi saya adalah sebagai berikut:
Ini adalah kasus klasik di mana saya memiliki wadah yang perlu ditempatkan di latar belakang, dengan tombol di samping. Untuk tujuan tata letak, saya menyertakan tombol dalam UIStackView, tetapi sekarang bagian tengah (kosong) dari penyadapan stackView menyentuh :-(
Apa yang saya lakukan adalah membuat subclass UIStackView dengan properti yang mendefinisikan subView yang harus dapat disentuh. Sekarang, setiap sentuhan pada tombol samping (termasuk dalam larik * viewsWithActiveTouch *) akan diberikan ke tombol, sementara setiap sentuhan pada stackview di mana pun selain tampilan ini tidak akan dicegat, dan oleh karena itu diteruskan ke apa pun yang ada di bawah tumpukan melihat.
/** Subclass of UIStackView that does not accept touches, except for specific subviews given in the viewsWithActiveTouch array */
class NoTouchStackView: UIStackView {
var viewsWithActiveTouch: [UIView]?
override func hitTest(point: CGPoint, withEvent event: UIEvent?) -> UIView? {
if let activeViews = viewsWithActiveTouch {
for view in activeViews {
if CGRectContainsPoint(view.frame, point) {
return view
}
}
}
return nil
}
}