正在防触摸模式状态,无法操作

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正在防触摸模式状态,无法操作相关的知识,希望对你有一定的参考价值。

防误触模式是为了防止手机在口袋中由于挤压或滑动引起的误操作而设置的。

开关路径:

    EMUI 3.1:设置>全部设置>智能辅助>更多>防误触模式,可以开启或关闭。

    EMUI 4.0及以上版本:设置>智能辅助>防误触模式,可以开启或关闭。

此外,请确认点亮手机屏幕时有无异物遮挡了手机顶端,确保无遮挡情况下操作手机。

来自:求助得到的回答
参考技术A 请允许我用22种编程语言,祝大家新年快乐
C语言:printf("祝大家新年快乐");
C++ : cout<<"祝大家新年快乐";
OC: NSLog(@"祝大家新年快乐");          QBasic : Print "祝大家新年快乐"
Asp : Response.Write "祝大家新年快乐"
php : echo "祝大家新年快乐";
JScript: alert("祝大家新年快乐")
VBScript:MsgBox "祝大家新年快乐"
Jscript:document.write("祝大家新年快乐")
Delphi: ShowMessage('祝大家新年快乐!');
VB: Print "祝大家新年快乐!"
VC: MessageBox("祝大家新年快乐!");
shell: echo 祝大家新年快乐
perl: print '祝大家新年快乐'
java: System.out.println("祝大家新年快乐");
powerBuilder:messagebox("祝大家新年快乐")
C#:System.Console.WriteLine("祝大家新年快乐!")
COBOL:DISPLAY '祝大家新年快乐!
Python:print("祝大家新年快乐!")
AS:Alert.show("祝大家新年快乐!");
Foxpro: ? 【祝大家新年快乐!】
DOS 批处理: echo 祝大家新年快乐
易语言:信息框(“祝大家新年快乐!”,,64)
参考技术B 可以按返回键 参考技术C igxfxfuz

当用户在 SwiftUI 中触摸 GoogleMaps 的标记时如何更改 UI 状态?

【中文标题】当用户在 SwiftUI 中触摸 GoogleMaps 的标记时如何更改 UI 状态?【英文标题】:How to change UI state when user touch GoogleMaps' Marker in SwiftUI? 【发布时间】:2020-09-03 07:24:30 【问题描述】:

这个问题是关于 SwiftUI 的。

我正在尝试显示地图并允许用户触摸任何可用的标记。发生这种情况时,我希望更改视图上的文本,以反映该用户的操作。

经过大量搜索,我认为解决方案可能接近 Observable 协议,但我就是想不出正确的方法。这是我的代码:


struct Home: View 

    // Here's the attribute I want to be changed when user touches the marker
    var selectedMarker: GMSMarker?

    var body: some View 

            VStack(spacing: 0) 

                // Condition to be applied when user touches the marker                                
                if (selectedMarker == nil)
                    Text("No marker selected").padding()
                else
                    Text("Now, there's a marker selected").padding()
                

                GoogleMapsHome()

        
        .navigationBarBackButtonHidden(true)
        .navigationBarTitle(Text("Marker question"), displayMode: .inline)

    



struct Home_Previews: PreviewProvider 
    static var previews: some View 
        Home()
    


这是 GoogleMaps 的定义:

struct GoogleMapsHome: UIViewRepresentable 

    private let zoom: Float = 18

    // Just for didactic purposes. Later, I'm going to use LocationManager
    let lat: Double = -15.6692660716233
    let lng: Double = -47.83980712156295

    func makeUIView(context: Self.Context) -> GMSMapView 

        let camera = GMSCameraPosition.camera(
            withLatitude: lat,
            longitude: lng,
            zoom: zoom)

        let mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera)

        mapView.mapType = .hybrid

        mapView.delegate = context.coordinator

        return mapView

    

    func updateUIView(_ mapView: GMSMapView, context: Context) 

        mapView.animate(toLocation: CLLocationCoordinate2D(latitude: lat, longitude: lng))

        let position = CLLocationCoordinate2D(latitude: lat, longitude: lng)
        let marker = GMSMarker(position: position)

        marker.title = "You"

        marker.map = mapView

    

    func makeCoordinator() -> Coordinator 
       Coordinator(owner: self)
    

    class Coordinator: NSObject, GMSMapViewDelegate, ObservableObject 

        let owner: GoogleMapsHome       // access to owner view members,

        init(owner: GoogleMapsHome) 
         self.owner = owner
        

        @Published var selectedMarker: GMSMarker? 
            willSet  objectWillChange.send() 
        

        func mapView(_ mapView: GMSMapView, didTap marker: GMSMarker) -> Bool 

            print("A marker has been touched by the user")

            self.selectedMarker = marker

            return true

        

    


我希望有人可以帮助我,以后,这个问题对任何有同样需要的人都有用。

最好的问候!

【问题讨论】:

【参考方案1】:

过了一会儿,我找到了解决它的方法。

其中的关键字是“协调器”和“绑定”。

当然,我不确定这是正确的方法还是最好的方法,但至少它奏效了。


import Foundation
import SwiftUI
import GoogleMaps

struct Home: View 

    @State var selectedMarker: GMSMarker?

    var body: some View 

            VStack(spacing: 0) 

                if (selectedMarker == nil)
                    Text("No marker selected").padding()
                else
                    Text("There's a marker selected").padding()
                

                GoogleMapsHome(selectedMarker: self.$selectedMarker)

        
        .navigationBarBackButtonHidden(true)
        .navigationBarTitle(Text("Map Test"), displayMode: .inline)

    



struct Home_Previews: PreviewProvider 
    static var previews: some View 
        Home()
    


struct GoogleMapsHome: UIViewRepresentable 

    private let zoom: Float = 18

    let lat: Double = -15.6692660716233
    let lng: Double = -47.83980712156295

    @Binding var selectedMarker: GMSMarker?

    func makeCoordinator() -> Coordinator 
        return Coordinator(
            owner: self,
            selectedMarker: $selectedMarker)
    

    func makeUIView(context: Self.Context) -> GMSMapView 

        let camera = GMSCameraPosition.camera(
            withLatitude: lat,
            longitude: lng,
            zoom: zoom)

        let mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera)

        mapView.mapType = .hybrid

        mapView.delegate = context.coordinator

        return mapView

    

    func updateUIView(_ mapView: GMSMapView, context: Context) 

        mapView.animate(toLocation: CLLocationCoordinate2D(latitude: lat, longitude: lng))

        let position = CLLocationCoordinate2D(latitude: lat, longitude: lng)
        let marker = GMSMarker(position: position)

        marker.title = "You"

        marker.map = mapView

    


    class Coordinator: NSObject, GMSMapViewDelegate, ObservableObject 

        let owner: GoogleMapsHome       // access to owner view members,

        @Binding var selectedMarker: GMSMarker?

        init(
            owner: GoogleMapsHome,
            selectedMarker: Binding<GMSMarker?>
        ) 

            self.owner = owner

            _selectedMarker = selectedMarker

        

        func mapView(_ mapView: GMSMapView, didTap marker: GMSMarker) -> Bool 

            print("A marker has been touched")

            self.selectedMarker = marker

            return true

        

    


【讨论】:

以上是关于正在防触摸模式状态,无法操作的主要内容,如果未能解决你的问题,请参考以下文章

壁挂触摸屏一体机怎么重装操作系统?

excel如何退出编辑状态

React Hooks异步操作防踩坑指南

解决新装 Windows 11 系统触摸板多指操作无法使用的问题

电脑触摸屏怎么在unity里实现多点触屏

当用户在 SwiftUI 中触摸 GoogleMaps 的标记时如何更改 UI 状态?