72111


以下のコードで、1本指ドラッグと2本指ドラッグを実装しました。  
以下のコードでは、2本指ドラッグが検出されません。ただし、1本指ドラッグは検出されます。

そして、`self.view.addSubview(firstView)`の行をコメントアウトすると、2本指ドラッグも検出されるようになります。

[code]

    import UIKit
    import Foundation
    
    
    class ViewController: UIViewController {
        @IBOutlet weak var firstView: UIView!
        
        override func viewDidLoad() {
            super.viewDidLoad()
            self.view.addSubview(firstView)
            self.view.isMultipleTouchEnabled = true
        }
        
        
        override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?)
        {
            // タッチイベントを取得
            let touchEvent = touches.first!
            
            //指の本数
            let fingerNum = touches.count
            
            if fingerNum == 1
            {
                print("1本指ドラッグ")
            }
            else if fingerNum == 2
            {
                print("2本指ドラッグ")
            }
        }
        
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
        }
    }
    
[/code]

単純に、`self.view.isMultipleTouchEnabled =
true`の行を、`self.firstView.isMultipleTouchEnabled =
true`に書き換えれば、addSubViewをした後でも2本指ドラッグが検出されます。

しかし、今回はそれをやらずに`self.view.isMultipleTouchEnabled =
true`のままで2本指ドラッグを実装したいと考えています。

なぜ、addSubViewをすると1本指ドラッグは検出されるのに、2本指ドラッグだけ検出されなくなるのでしょうか？


CC BY-SA 4.0
2020-11-21T00:17:00.307
72108
2020-11-21T03:29:17.140
36446
question
swift
addSubViewをすると2本指ドラッグが検出されなくなる


> 単純に、self.view.isMultipleTouchEnabled =
> trueの行を、self.firstView.isMultipleTouchEnabled =
> trueに書き換えれば、addSubViewをした後でも2本指ドラッグが検出されます。  
>  しかし、今回はそれをやらずにself.view.isMultipleTouchEnabled =
> trueのままで2本指ドラッグを実装したいと考えています。

UIView の isUserInteractionEnabled プロパティはデフォルト true です。  
self.firstView.isUserInteractionEnabled = false  
とすれば  
self.view.isMultipleTouchEnabled = true  
としているので  
self.view で2本指ドラッグを検出できます。

> なぜ、addSubViewをすると1本指ドラッグは検出されるのに、2本指ドラッグだけ検出されなくなるのでしょうか？

self.view.addSubview(firstView) により self.view の上に配置された self.firstView の
isMultipleTouchEnabled が false のため2本指ドラッグが検出できなくなってますね。


CC BY-SA 4.0
2020-11-21T03:29:17.140
72111
2020-11-21T03:29:17.140
41756
72108
answer