текстовый файл и кнопка внутри кнопки - PullRequest
1 голос
/ 19 января 2020

Я пытаюсь вызвать кнопку, когда пользователь нажимает на фоновую область представления. В качестве решения я решил сделать кнопку и поместить вид в кнопку как метку. Но проблема в том, что кнопка срабатывает даже на TextField, а иногда и на другой кнопке внутри.

Как я могу отключить кнопку "Назад" в некоторых представлениях (в данном случае TextField и Button), которые я выбираю?

Я прилагаю свой код ниже и отрендеренный просмотр .

import SwiftUI

struct ButtonOnbutton: View {
    @State var memo: String = ""
    var body: some View {
        Button(action: {
            print("down button clicked")
        }) {
            VStack(spacing: 10) {
                Text("before")
                    .foregroundColor(.white)
                TextField("type memo", text: $memo)
                    .font(.custom("SFProDisplay-Regular", size: 12))
                    .textFieldStyle(RoundedBorderTextFieldStyle())
                Text("after")
                    .foregroundColor(.white)
                Button(action: {
                    print("inside button clicked")
                }) {
                    Text("inside button")
                        .foregroundColor(.white)
                }
                .background(Color.red)
            }
        }
        .background(Color.blue)
    .padding()
    }
}

struct buttonOnbutton_Previews: PreviewProvider {
    static var previews: some View {
        ButtonOnbutton()
    }
}

1 Ответ

0 голосов
/ 19 января 2020

Если я правильно понял вашу цель, то лучше использовать onTapGesture вместо кнопки, как показано ниже

var body: some View {
    VStack(spacing: 10) {
        Text("before")
            .foregroundColor(.white)
        TextField("type memo", text: $memo)
            .font(.custom("SFProDisplay-Regular", size: 12))
            .textFieldStyle(RoundedBorderTextFieldStyle())
            .onTapGesture {} // << just blocks outer tap
        Text("after")
            .foregroundColor(.white)
        Button(action: {
            print("inside button clicked")
        }) {
            Text("inside button")
                .foregroundColor(.white)
        }
        .background(Color.red)
    }
    .background(Color.blue)
    .onTapGesture {
        print("background area clicked")
    }
    .padding()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...