- Xcode 8.3.3
- Swift 3.1
import UIKit
class ExampleViewController: UIViewController {
private var _Dismiss: Bool = false
private let TAG: Int = 100
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = UIColor.gray
_Dismiss = false
let viewAdd = UIView(frame: CGRect(x: 0, y: 0, width: 300, height: 400))
viewAdd.backgroundColor = UIColor.white
viewAdd.center = self.view.center
viewAdd.tag = TAG
self.view.addSubview(viewAdd)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
override func touchesBegan(_ touches: Set<uitouch>, with event: UIEvent?) {
if _Dismiss {
return
}
let point = touches.first?.location(in: self.view)
let viewAdd: UIView = self.view.viewWithTag(TAG)! as UIView
if !viewAdd.frame.contains(point!) {
_Dismiss = true
// 範囲外をタッチした時の処理
}
}
}
touchesBeganなので指が画面に触れた時のイベントです。
touchesEndedにすれば指が画面から離れた時のイベントになります。
ただ、touchesBeganに画面制御を記述すると反応の早い、ユーザビリティの高いアプリとユーザに判断されます。まぁこれも使い所次第ですが😅
課金とかにtouchesBeganで処理されたら私は速攻アプリアンインストールします😅
なんか信用出来ないですからね…
というかUIがボタンならBeganでselectな制御(グレースケールしたりとか縮小させたりとか)して、Movedで範囲内外を判定、Endedで範囲内(というかBeganで触ったものと同一のままならとか)ならselectedな制御して範囲外なら何もしない(タッチ状態フラグを解除程度)みたいな制御が普通ですね。
こういう制御例ってあまりネットに載らないですよね😇
各社ノウハウとして溜まってるだけで。
まぁ気が向いたらその辺も公開していきます🙌掲載するコード量がとんでもないことになりそう😇
0 件のコメント:
コメントを投稿