/* * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ #import #import #import @implementation RCTMultilineTextInputView { RCTUITextView *_backedTextInputView; } - (instancetype)initWithBridge:(RCTBridge *)bridge { if (self = [super initWithBridge:bridge]) { // `blurOnSubmit` defaults to `false` for by design. self.blurOnSubmit = NO; _backedTextInputView = [[RCTUITextView alloc] initWithFrame:self.bounds]; _backedTextInputView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; _backedTextInputView.textInputDelegate = self; [self addSubview:_backedTextInputView]; } return self; } - (id)backedTextInputView { return _backedTextInputView; } #pragma mark - UIScrollViewDelegate - (void)scrollViewDidScroll:(UIScrollView *)scrollView { RCTDirectEventBlock onScroll = self.onScroll; if (onScroll) { CGPoint contentOffset = scrollView.contentOffset; CGSize contentSize = scrollView.contentSize; CGSize size = scrollView.bounds.size; UIEdgeInsets contentInset = scrollView.contentInset; onScroll(@{ @"contentOffset": @{ @"x": @(contentOffset.x), @"y": @(contentOffset.y) }, @"contentInset": @{ @"top": @(contentInset.top), @"left": @(contentInset.left), @"bottom": @(contentInset.bottom), @"right": @(contentInset.right) }, @"contentSize": @{ @"width": @(contentSize.width), @"height": @(contentSize.height) }, @"layoutMeasurement": @{ @"width": @(size.width), @"height": @(size.height) }, @"zoomScale": @(scrollView.zoomScale ?: 1), }); } } @end