2016-12-29 12 views
2

これはちょっと変わった問題のようです。私はViewControllerに置かれたtableViewの中の反復されたtableViewCellのUIButtonを持っています。なんらかの理由で、長押しのときには、それがクリックされたように見えます(デフォルトの青色から明るい青色に短くハイライトし、次に青色に戻ります)。それは私がそれを割り当てるどんなアクション(通常の古い印刷ステートメントで始まったばかりでも)を通常のクリックで行いますが、ちょうどが表示されません。がクリックされました。誰でもこれを修正する方法を知っていますか?通常の状態で ボタン:クリックされた後 Button in its normal stateUIボタンは、longPressでクリック(強調表示)されていますか?

ボタン:

Button after being clicked

ボタンを長押しされた後(申し訳ありませんが、このために携帯電話で写真を撮っていた)

enter image description here

編集:これはiOS7に関する質問とは異なります。これは、iOS 10を迅速に探しているためです溶出、目的ではない - c。またiOS7

+1

スクリーンショットやgifを追加して、何が起こっているのかを表示できますか?私はあなたの説明から何が起こっているのかはっきりとは分かりません。 – Jadar

+0

@ Jadar、関連する画像を掲載しました。通常の状態とシングルクリックボタンの外観は同じです。長押しした後でのみ、強調表示されて明るくなります。その後、元の状態の色に戻ります。 –

+0

[UIButtonの複製がiOS7のタップでハイライト表示されません](http://stackoverflow.com/questions)/19256996/uibutton-not-showing-highlight-on-tap-in-ios7) – Jadar

答えて

1

これは正常な動作です。これは、UIScrollViewのdelaysContentTouchesプロパティによるものです。 Appleのdocsあたり:

このプロパティの値がYESであればスクロールが 意図であるならば、それは決定できるようになるまで、スクロールビューの遅延が タッチダウンジェスチャーを扱います。値がNOの場合、スクロールビューは直ちに touchesShouldBegin:withEvent:inContentView:を呼び出します。

編集: This answerは以下の溶液を与える。私はそれをテストし、それは動作します。しかし、キャスティングの魔法をしているので、実際にこれを行うことはお勧めしません。なぜなら、アップルが自分のビュー階層を舞台裏で変えようと決めたとき、それは必然的に壊れるからです。

tableView.delaysContentTouches = false 
for case let x as UIScrollView in tableView.subviews { 
    x.delaysContentTouches = false 
} 

OLD ANSWER: This answerは、ソリューションを提供しますが、それは本当にハックだし、あなたのアプリが原因プライベートクラスの使用にアップルによって拒否を取得することがあります。振る舞いは本当に機能なので、そのまま放置することをお勧めします。

+0

それは意味があるのか​​分かりません。ボタンアクションは即座に呼び出され、そのハイライト表示は発生しません。本質的にアプリがスクロールかどうかを判断するのを待っている場合、なぜアクションがすぐに呼び出されますか?また、 'tableViewController'(この質問のシナリオは' ViewController'に 'tableView'が置かれています)、これは起こりません。遅れはなく、すぐにボタンが押されたと見ることができます。 –

+0

アクションは処理されていますが、UIは遅れているのが不思議です。しかし、私がテストしたとき、私はUITableViewControllerでそれを行い、遅延を見ました。 – Jadar

+0

だから私はそれがUITableViewによって採用されているさまざまなUIScrollViewsと関係していると思います。それが作成された方法に関係なく。 – Jadar

関連する問題