Swift에서 사용자 상호 작용을 비활성화하는 방법UI 보기?
제가 스위프트를 가지고 있다고 칩시다.다음과 같은 UI 보기 계층:
ZStack() {
ScrollView {
...
}
Text("Hello.")
}
그Text
뷰 블록 터치 이벤트가 기본값에 도달하지 않음ScrollView
.
UIKit을 사용하면 다음과 같은 것을 사용할 수 있습니다..isUserInteractionEnabled
하지만 스위프트를 이용해서 이걸 할 수 있는 방법을 찾을 수가 없어요UI.
추가해봤습니다.Gesture
와 함께GestureMask
의.none
텍스트 보기에서, 하지만 그것은 작동하지 않는 것처럼 보입니다.
스크롤 보기 위에 상태 정보를 추가해야 하기 때문에 여기에 명백한 내용이 누락되었으면 합니다.
.allowShit를 사용하는 것은 어떻습니까?테스트()?
https://developer.apple.com/documentation/swiftui/image/3269586-allowshittesting
사용할 수 없는 경우 제스처를 뒤에 있는 보기로 전달해야 합니다.
ZStack() {
ScrollView {
...
}
Text("Hello.").allowsHitTesting(false)
}
View에는 사용자 상호 작용을 비활성화하거나 활성화하는 수식어가 있습니다.
disabled(_ disabled: Bool)
선명한 색상(불투명도는 항상 변경할 수 있음)을 제외하고 보기를 일부 색상으로 채우려고 합니다.요소를 숨기기 위해 블러도 추가했습니다.제가 성공한 것은 다음과 같습니다.
Swift UI:
ZStack{
SomeView().blur(radius: 12)
Rectangle()
.fill(Color.white.opacity(0))
.allowsHitTesting(false)
}
스크롤 또는 버튼 탭과 같은 사용자 상호 작용을 비활성화하지만 사용자 탭에 작업을 첨부하는 다른 방법(예: 이 기능이 사용 중이거나 페이월 뒤에 있다는 메시지):
Swift UI:
VStack{
SomeView().blur(radius: 12)
}
.contentShape(Rectangle())
.onTapGesture {
print("No access!")
}
스위프트 UI 2.0
ZStack {
// Your Stack to Disable User Interaction
}.disabled(showLoadingIndicator)
"탭 사용 안 함" 보기를 다음에 추가합니다.Group
그런 다음 수식어를 적용합니다..allowsHitTesting(false)
그룹 내 보기와의 상호 작용을 사용 불가능으로 설정합니다.
Group {
Button("Hello")
}
.allowsHitTesting(false)
상호 작용을 활성화하려면 수식어를 true로 전환합니다.
스위프트의 버그일 가능성이 높습니다UI, 그러나 이 문제에 대한 해결 방법은 다음을 제거하는 것이었습니다..border()
내가 신었던.Text
범위 디버깅에 대한 보기입니다.
스위프트 내부의 특정 요소.disabled 또는 .allowHitTesting을 통해 UI를 사용하지 않도록 설정할 수 없습니다.주요 해킹은 요소를 TabView로 래핑하고 페이징 스타일을 적용하는 것입니다.다시 말하지만 이것은 큰 해킹이지만 현재 제가 사용하고 있는 흥미로운 솔루션입니다.
저는 시계 앱에서 비슷한 일을 하고 있습니다. 슬라이더 위에 텍스트 필드를 겹쳐 놓는 것입니다.텍스트 필드에 적용할 때 .disable 또는 .allowHitTesting이 작동하지 않습니다.
이 문제를 해결하기 위해 텍스트 필드를 Group{}에 배치한 다음 .allowHitTesting(false)을 적용하면 완벽하게 작동한다는 것을 알게 되었습니다.
ZStack {
}
.allowsHitTesting(false)
사용자 상호 작용이 비활성화됩니다.
언급URL : https://stackoverflow.com/questions/57896392/how-to-disable-user-interaction-on-swiftui-view
'programing' 카테고리의 다른 글
numpy 배열을 Excel 파일로 덤프 (0) | 2023.08.22 |
---|---|
Excel VBA - 열거된 요소의 값 설정 (0) | 2023.08.22 |
무한 재귀 오류 없이 __getattribute__를 구현하려면 어떻게 해야 합니까? (0) | 2023.08.17 |
Excel VBA에 개체 필요 오류가 있습니다. (0) | 2023.08.17 |
오류 2002(HY000):소켓 '/var/run/mysqld/mysqld/mysqld를 통해 로컬 MySQL 서버에 연결할 수 없습니다.sock' (2) 해결책이 작동하지 않음 (0) | 2023.08.17 |