2016-05-11 7 views
1

ユーザーがプロファイルを更新できる通常のビューを作成しています。私はUItextfieldsでUIScrollViewがスクロールしない

  • が追加
  • スーパービューのような、ほぼ9 UITextFieldと小1 UIWebView
  • 満足自動レイアウトの制約をUIScrollViewを追加しました
  • XIBファイルで新しい UIViewControllerを作成し

    1. そのビューを作成するには、次の手順に従っ上部UITextFieldは、上、左、右、および高さの制約を持ち、次のすべての コントロールで同じですが、最後にUITextFieldには、上、左、右、下高さ 制約。

    は今、すべての制約が適用され、満足が、私は、ビューを実行し、UITextFieldをドラッグしてスクロールしようとすると、その後scrollviewがスクロールされていませんが、私はUITextField以外のいくつかの領域からドラッグしてスクロールするならば、それはされています非常にスクロールスクロール。誰が主な問題になるのか教えていただけますか?

    注:xibファイルの設定以外のコードはありません。 サンプルプロジェクトは、UIScrollViewのためYESにこのリンクhttps://www.dropbox.com/s/7oqry8yzd9twnp1/TestScroll.zip?dl=0

    +0

    サンプルプロジェクトを提供できますか? – arturdev

    +1

    これは役立つかもしれませんhttp://stackoverflow.com/questions/12126860/in-ios-when-touching-a-text-field-in-a-scroll-view-the-view-can-not-scroll –

    +0

    @ SuuryaSubenthiran私はその解決策を試みましたが無駄でした。 – Mashhadi

    答えて

    0

    設定delayContentTouchesPropertyで提供されています。これにより、UIScrollViewのコンテンツに触れるとスクロールできます。 プログラムでもストーリーボードでも実行できます。

    +0

    に良い仕事、あなたのデモプロジェクトのすべてで – Mashhadi

    +0

    今まだしようとしたテキストフィールド –

    1

    ScrollViewのすべてのテキストフィールドに追加の親ビューを追加する必要があります。

    注:

    • はUIViewのw.r.t.に制約を与えます先頭、末尾、上端、下端、および等幅としてのUIScrollView。

    • また、UIView w.r.t.の最後のオブジェクトの下限制約を追加することを忘れないでください。 UIView(コンテンツを完成した後には多くの場合 がスクロールしないので、約30にカスタマイズします)。

    • 0にUIScrollViewのw.r.tのUIViewの下の制約をカスタマイズ

    参照:UIScrollViewのtouchesShouldCancelInContentViewメソッドをオーバーライドenter image description here

    +0

    ために、高さの制約を削除してくださいません運がない – Mashhadi

    +0

    それはうまくいくはず、私は働いている..!あなたは今何の問題を抱えていますか? –

    2

    は、この問題を解決します。タッチがすでにスクロールビューのサブビュー に配信されている場合 スクロールが始まる前に、アップルtouchesShouldCancelInContentViewによると

    が呼び出されます。 NOを返す場合は、サブビューに引き渡された が引き続き表示され、スクロールは発生しません。

    ビューがUIControlの場合、デフォルトではこのメソッドはNOを返します。 UIControlsではスクロールが発生しません。

    このメソッドからYESを返すと、タッチはサブビューに配信されないため、スクロールが発生します。私たちはこのことができます

    希望YESにcanCancelContentTouchesプロパティを設定している場合touchesShouldCancelInContentViewメソッドのみを呼び出します:

    だから

    @interface MyScrollView : UIScrollView 
    
    @end 
    
    @implementation MyScrollView 
    
    - (BOOL)touchesShouldCancelInContentView:(UIView *)view{ 
        return YES; 
    } 
    
    @end 
    

    NOTEは次のようにUIScrollViewのtouchesShouldCancelInContentViewをオーバーライドします。

    +0

    これらの手順に従いましたが、引き続きtouchesShouldCancelInContentViewメソッドが呼び出されていません。 – Mashhadi

    +0

    アイデンティティ・インスペクタでMyScrollViewクラスを記述しましたか? –

    +0

    ありがとうございました – Mashhadi

    0

    uiscrollViewのスーパービューとしてuiviewを使用し、すべてのテキストフィールドをuiviewに置き、uiscrollViewに関してuiviewに適用されるすべての満足できる制約を必ず適用してください。

    関連する問題