SwiftUI 프레임 내 어디서나 반응, Long Press도 반응하는 버튼 만들기

7506 단어 SwiftSwiftUI

하고 싶은 일





① 프레임 내 어디서나 반응
②Tap:Tap용 액션
③Long Press: Long Press용 액션

1st 액션



코드


VStack(spacing: 16.0) {
    Button(action: {
        print("Button Action!!")
    }, label: {
        Text("Button")
            .frame(width: 200, height: 100, alignment: .center)
            .overlay(RoundedRectangle(cornerRadius: 16.0).stroke())
    })
    .onLongPressGesture {
        print("Button Action Long!!")
    }
    Text("Text Button")
        .frame(width: 200, height: 100, alignment: .center)
        .overlay(RoundedRectangle(cornerRadius: 16.0).stroke())
        .onTapGesture {
            print("Text Action!!")
        }
        .onLongPressGesture {
            print("Text Action Long!!")
        }
        .foregroundColor(.blue)
}
.padding(32.0)
.background(Color(.systemGray6))

결과





하고 싶은 일을 모두 이룰 수는 없다.
Button는 Long Press를 반작용할 수 없다.
Text는 프레임 내 어디서나 반응할 수 없다.

현재 해결책



코드


VStack(spacing: 16.0) {
    Text("Text2 Button")
        .frame(width: 200, height: 100, alignment: .center)
        .overlay(RoundedRectangle(cornerRadius: 16.0).stroke())
        .overlay(RoundedRectangle(cornerRadius: 16.0).foregroundColor(Color.red.opacity(0.0000001)))
        .onTapGesture {
            print("Text2 Action!!")
        }
        .onLongPressGesture {
            print("Text2 Action Long!!")
        }
        .foregroundColor(.blue)
}
.padding(32.0)
.background(Color(.systemGray6))

외형





시도는 계속된다



・탭과 롱 프레스를 시키는 UI 디자인이 어떻습니까?
·그 밖에 방법이 있는 것이 아닌가.

좋은 웹페이지 즐겨찾기