WebHU - Programozási kérdések és válaszok

A scrollView görgetése a TextView segítségével

A scrollView felül egy UIImageView-t tartalmaz, az UITextView-t pedig scrollingEnabled = NO , szeretném görgetni a scrollView-t azon a helyen, ahol gépelek.

- (void)createScrollView{
//TPKeyboardAvoidingScrollView *scrollView = [[TPKeyboardAvoidingScrollView alloc]init];
UIScrollView *scrollView = [[UIScrollView alloc]init];
//[self.view insertSubview:scrollView belowSubview:_mediaSelectionView];
[self.view addSubview: scrollView];
[scrollView setTranslatesAutoresizingMaskIntoConstraints: NO];
self.scrollView = scrollView;
scrollView.showsHorizontalScrollIndicator = NO;
scrollView.showsVerticalScrollIndicator = NO;
scrollView.bouncesZoom = NO;
scrollView.alwaysBounceVertical = YES;
scrollView.clipsToBounds = YES;
self.automaticallyAdjustsScrollViewInsets = YES;
NSLayoutConstraint *scrollViewTop = [NSLayoutConstraint
                                     constraintWithItem: scrollView
                                     attribute: NSLayoutAttributeTop
                                     relatedBy: NSLayoutRelationEqual
                                     toItem: self.navigationBarBGView
                                     attribute: NSLayoutAttributeBottom
                                     multiplier: 1 constant:0.0
                                     ];
NSLayoutConstraint *scrollViewLeading = [NSLayoutConstraint
                                         constraintWithItem: scrollView
                                         attribute: NSLayoutAttributeLeading
                                         relatedBy: NSLayoutRelationEqual
                                         toItem: self.view
                                         attribute: NSLayoutAttributeLeading
                                         multiplier: 1 constant:0.0
                                         ];

NSLayoutConstraint *superViewTraling = [NSLayoutConstraint
                                        constraintWithItem: self.view
                                        attribute: NSLayoutAttributeTrailing
                                        relatedBy: NSLayoutRelationEqual
                                        toItem: scrollView
                                        attribute: NSLayoutAttributeTrailing
                                        multiplier: 1 constant:0.0
                                        ];

NSLayoutConstraint *bottomLayoutGuideTop = [NSLayoutConstraint
                                            constraintWithItem:self.view
                                            attribute: NSLayoutAttributeBottom
                                            relatedBy: NSLayoutRelationEqual
                                            toItem: scrollView
                                            attribute: NSLayoutAttributeBottom
                                            multiplier: 1 constant:0.0
                                            ];
//Add All Constrains.
[self.view addConstraints: @[scrollViewTop , scrollViewLeading , superViewTraling , bottomLayoutGuideTop ]];

_contentView = [[UIView alloc]init];

[scrollView addSubview: _contentView];
[_contentView setConstraintFlag];
[_contentView setFullWidth];
[_contentView setTopFromParent:0];

}

- (void)createCommentTextView{
    UITextView *textView = [[UITextView alloc]init];
    textView.backgroundColor = [UIColor clearColor];
    textView.textColor = [UIColor colorWithR:67 G:83 B:83 A:1.0f];
    textView.delegate = self;
    textView.scrollEnabled = NO;        
    _commentTextView = textView;
    [_textViewContainer addSubview:textView];

}

-(void)updateContentSize{
self.scrollView.contentSize = CGSizeMake(self.scrollView.contentSize.width, self.contentView.frame.size.height);

}

A scrollView a _contentView elemet tartalmazza, a contentView pedig az UITextView elemet. textView magassága növekszik, ahogy a felhasználó gépel, és a _contentView alja megegyezik a textView aljával.



Válaszok:


1

használja:
pod 'TPKeyboardAvoiding' vagy
https://github.com/michaeltyson/TPKeyboardAvoiding

pod 'AnimatedTextInput'
https://github.com/jobandtalent/AnimatedTextInput

11.09.2017
  • Ezeket a Pod-okat is használom a projektjeimben, és ez sok gondot megszabadít a nézet automatikus görgetésétől és a billentyűzet megjelenésekor történő beállítástól. 12.09.2017

  • 2

    Több bejegyzést és blogot is átnéztem, de nem kaptam pontos választ, amire vágytam. Ezek után más posztok és blogok segítségével kitaláltam valamiféle szolnokat. Remélhetőleg ez segíteni fog.

    - (void)scrollToCursor{
        if(self.currentTextView.selectedRange.location != NSNotFound) {
    
        NSRange range = self.currentTextView.selectedRange;
    
        NSString *string = [<YOUR_TEXTVIEW>.text substringToIndex:range.location];
    
        CGSize size = [string boundingRectWithSize:<YOUR_TEXTVIEW>.frame.size
                                           options:NSStringDrawingUsesLineFragmentOrigin| NSStringDrawingUsesFontLeading
                                        attributes:@{NSFontAttributeName:<YOUR_TEXTVIEW>.font}
                                           context:nil].size;
    
        NSInteger yPosition = (<YOUR_TEXTVIEW>.frame.origin.y+size.height+<OFFSET(if required)>);
    
    
        NSInteger scrollViewVisibeYPositionStart = self.scrollView.contentOffset.y;
        NSInteger scrollViewVisibeYPositionEnd = scrollViewVisibeYPositionStart+self.scrollView.frame.size.height;
    
        BOOL needToSetOffset = NO;
    
        if (yPosition > scrollViewVisibeYPositionEnd) {
            yPosition = yPosition - self.scrollView.frame.size.height;
            needToSetOffset = YES;
    
        }else if (yPosition < scrollViewVisibeYPositionStart){
            yPosition = self.scrollView.frame.size.height + (scrollViewVisibeYPositionStart - yPosition);
            needToSetOffset = YES;
        }
    
        if (needToSetOffset) {
            CGPoint offset = CGPointMake(0,yPosition);
            [self.scrollView setContentOffset:offset];
      }
    }
    }
    
    12.09.2017
    Új anyagok

    A rádiógomb ellenőrzött eseményének használata a jQueryben
    Ebben a cikkben látni fogjuk, hogyan kell dolgozni a jquery választógombbal ellenőrzött eseményeivel. A választógombok HTML gombok, amelyek segítenek kiválasztani egyetlen értéket egy csoportból...

    Körkörös függőségek megoldása terraformban adatforrásokkal – lépésről lépésre
    Mi az a körkörös függőségek Dolgozzunk egy egyszerű eseten, amikor az SQS-sor és az S3-vödör közötti körkörös függőség problémája van egy egymástól függő címkeérték miatt. provider..

    Miért érdemes elkezdeni a kódolást 2023-ban?
    01100011 01101111 01100100 01100101 — beep boop beep boop Világunk folyamatosan fejlődik a technológia körül, és naponta fejlesztenek új technológiákat a valós problémák megoldására. Amint..

    🎙 Random Noise #2  – Örökbefogadás és hit
    az analitika íratlan világának gondozása Szeretné, hogy ezek a frissítések a postaládájába kerüljenek? Iratkozzon fel itt . "Ha önvezető autókat gyártanak, akkor mi miért ne..

    A legrosszabb politika és prediktív modellek májátültetésre jelöltek számára az Egyesült Államokban
    A máj (vagy óangolul lifer) az emberi test legnehezebb belső szervére utal, amely csendesen működik a nap 24 órájában. Mit csinál a máj? 500 feladatot hajt végre a szervezet egészségének..

    5 webhely, amely 2022-ben fejleszti front-end fejlesztői készségeit
    Frontendmentor.io A tényleges projektek létrehozásával a Frontendmentor.io segítséget nyújt a front-end kódolási képességeinek fejlesztésében. A kódolást azután kezdheti meg, hogy..

    Mikor kell használni a Type-t az interfészhez képest a TypeScriptben?
    A TypeScript a JavaScript gépelt szuperkészlete, amely statikus gépelést ad a nyelvhez. Ez megkönnyíti a robusztus és karbantartható kód írását azáltal, hogy a hibákat a fordítási időben..