programing

Swift에서 사용자 상호 작용을 비활성화하는 방법UI 보기?

megabox 2023. 8. 22. 22:02
반응형

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

반응형