[swift] 탭을 클릭하여 내용을 클립보드로 복사합니다.

4283 단어 SwiftiOS

오프닝


어제 항목 이후 지리적 인코딩(주소→위도·경도 변환)의 원본 코드를 확인하는 응용 프로그램을 제작하여 변환 결과의 위도·경도가 의도된 좌표를 가리키는지 확인하는 첫 단계로 제목에 따라 "탭을 클릭하여 내용을 클립보드로 복제"GoogleMap 및 브라우저 모두 붙여넣을 수 있습니다.

개발 환경


터미널: MacBook Pro/MacOS10.14.5(Mojave)
Xcode:10.2.1
Swift:5

화면 이미지


"PUSH ME!!"지리적 인코딩

클릭→붙여넣기로 위도, 경도 복사 확인

GoogleMap에서 볼 때, 그것은 하늘 나무를 가리킨다

소스 이미지


화면 이미지와 약간 차이가 있지만.
"위도"값을 클릭하여 클립보드에 복사한 처리를 추출하면
아래와 같다.
ViewController.swift
class ViewController: UIViewController {
    // 緯度の部分をタップすると緯度経度を取得する
    @IBOutlet weak var lblLat: UILabel!
    let myTGLat = UITapGestureRecognizer()

    override func viewDidLoad() {
        super.viewDidLoad()

        // タップを検知できるようにして、
        // その際に行う動作を定義する
        lblLat.isUserInteractionEnabled = true
        myTGLat.addTarget(self, action: #selector(tapLblLat(_:)))
        lblLat.addGestureRecognizer(myTGLat)

        // 以下、何かしらの処理をして、
        // 緯度に表示させたい値を取得、セット
    }

    // 緯度を表示するラベルをタップした際に呼ばれる処理
    @objc func tapLblLat(_ sender:UITapGestureRecognizer) {
        // lblLatに表示された値をクリップボードにコピー
        UIPasteboard.general.string = lblLat.text!

        // ※UIPasteboard.general.setValue では、
        // iOS11では動かないらしい。
    }
}
일찍 출력하고 싶어서 일부 추출된 논리가 됐지만, 실제로 구성된 것들의 논리가 조금만 더 정리되면 다시 쓰고 싶어요.

푹 빠진 요점 등


이번에는 샘플이 충실해서 빠지지 않았다.
억지로 말하면 탭 부분을 몇 번 눌러도 디버깅용 로그 출력 처리가 움직이지 않아 결과XXX.isUserInteractionEnabled = true를 잊어버린 것이 원인이다.

오늘 이후로


나는 다른 화면에 지리적 인코딩 결과를 보여주는 지도에 핀을 꽂는 곳으로 발전하고 싶다.
또한 지리적 인코딩된 곳을 Qiita의 항목으로 출력할 수 없기 때문에 그 부분을 다시 합니다.(info.plist의 설정은 주의사항이 많으니 잊지 마세요.)

좋은 웹페이지 즐겨찾기