1

次のコードがあります。メニュー用の第三者図書館(CarbonKit)です。特定のセグメント(タブ)を選択してジェスチャ認識機能を追加しようとすると、機能しません。私が間違っていることは何ですか?特定の[UIView]配列に対してUITapGestureRecognizerが機能しない

明らかに、私はhandleTapにブレークポイントを設定しました。それは関数にも入っていません。

+0

ジェスチャーを追加するときに 'carbonSegmentedControl'がnilでないかどうかチェックしましたか?また、Swift 2またはSwift 3を使用していますか? – alexburtnik

+0

@alexburtnik Swift 2.3を使用していますが、carbonSegmentedControlはnillではありません。オプション(>) – SoundShock

+0

いくつかの考え。まず、carbonTabSwipeNavigationとは何ですか?次に、carbonSegmentedControlがあなたのUISegmentedControlであると仮定すると、なぜ特定のボタンにタップジェスチャーを追加しようとしていますか?既に** **タップが内蔵されています。あなたは単にUISegmentedControl.valueChanged()に対してコードを作成してselectedSegmentIndexをチェックできませんでしたか? – dfd

答えて

0

サードパーティのUISegmentedControlが一般的なものに似ている場合、必要なものはすべて既に用意されています。ここに私のコードのいくつかがあります。 IBを使用している場合は、コントロールをIBActionに接続してください。

let imageSegments = UISegmentedControl (items: ["Original","Stained"]) 

override func viewDidLoad() { 
    super.viewDidLoad() 
    imageSegments.tintColor = UIColor.yellow 
    imageSegments.selectedSegmentIndex = 1 
    imageSegments.addTarget(self, action: #selector(changeImageView), for: .valueChanged) 
    view.addSubview(imageSegments) 
} 

func changeImageView() { 
    switch imageSegments.selectedSegmentIndex { 
    case 0: 
     imageView.image = imgOriginal 
    case 1: 
     imageView.image = imgEdited 
    default: 
     break 
    } 
    imageView.setNeedsDisplay() 
} 
+0

もう一度私の押したセグメントをもう一度押すと、これはうまくいきません。どのように私はそれを行うことができますか? – SoundShock

+0

原因は、セグメント化されたコントロール**がどのように動作するべきかに起因します**。私は今あなたの問題を参照してください。私の推測 - ちょうど、推測 - あなたは葛藤に遭っているということです。つまり、UISegmentedControlの「すぐに使える」機能は、受信者側では、(元の質問の)タップ認識機能よりもレスポンダーチェーンの方が高く、タップ(1)は「スケルチ」または「キャンセル」されています。 UISegmentedControl - あなたはすでに**そのセグメントを使用しているので、(2)そのタップはチェーン内のそれを超えることはありません。あなたができる唯一のことは、UIやサブクラスのリエンジニアリング、物事の再考です。 – dfd

関連する問題