Как избежать срабатывания сенсорного события в ForEach при перетаскивании или пролистывании - PullRequest
0 голосов
/ 08 апреля 2020

Я использую кнопку в ForEach для запуска события касания (перезагрузки данных текущего представления), когда пользователь выбирает / нажимает любое изображение mov ie в списке прокрутки. Но я обнаружил, что перезагрузка данных запускается даже при перетаскивании или вызове смахиванием в списке прокрутки. Также при нажатии на элемент в списке появляется белый флаг sh.

Итак, как избежать такого поведения, или я должен использовать другой способ запуска касания вместо кнопки? Пожалуйста, дайте намек на это.

/// Вот код

struct RecMovieList: View {

        var movies: [MovieViewModel]
        var model: MovieListViewModel

        var body: some View {
            VStack(alignment: .leading) {
                Text("\(SecHomeSection.Recomm.rawValue)")
                    .font(.headline)
                ScrollView(.horizontal) {
                    HStack(alignment: .top, spacing: 10) {
                        ForEach(0..<movies.count) { i in
                            VStack(alignment: .leading) {
                                Button(action: {
                                    self.model.getMovieDetail(id: self.movies[i].id)
                                    self.model.getSecSectionMoviesBundle(id: self.movies[i].id)
                                }) {
                                    KFImage(source: .network(self.movies[i].posterUrl))
                                    .renderingMode(.original)
                                    .resizable()
                                    .frame(width: 100, height: 150)
                                    .aspectRatio(2/3, contentMode: .fill)
                                }



                                Text("\(self.movies[i].title)")
                                .lineLimit(2)
                                .foregroundColor(.gray)
                                    .frame(height: 50, alignment: .top)

                            }.frame(width: 100)
                        }
                    }
                }
                //.frame(height: 100)
            }
            .padding(.horizontal).padding(.bottom)
        }
    }

// Обновление , я пытаюсь использовать onTapeGesture вместо Button, тогда эта проблема исчезла.

.onTapGesture {
  self.model.getMovieDetail(id: self.movies[i].id)
  self.model.getSecSectionMoviesBundle(id: self.movies[i].id)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...