Skip to content
This repository has been archived by the owner on Oct 30, 2018. It is now read-only.

Update bottom margin to accommodate iPhone X home indicator #619

Merged
merged 10 commits into from
Nov 2, 2017
3 changes: 2 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -3,7 +3,8 @@
## Version 1.9.6

##### Hot Fixes & Enhancements:
- Fixed the text input not being interactive on iOS. Making `SLKTextInputbar` a UIView subclass instead of `UIToolbar`.
- Fixed the text input not being interactive on iOS 11
- Fixed iPhone X issue where the text input bar wouldn't expand to the bottom of the screen, below the "gesture bar".

##### Deprecation:
- Deprecated `-shouldProcessTextForAutoCompletion:` in favor of `-shouldProcessTextForAutoCompletion`
2 changes: 1 addition & 1 deletion Source/SLKTextInputbar.h
Original file line number Diff line number Diff line change
@@ -26,7 +26,7 @@ typedef NS_ENUM(NSUInteger, SLKCounterPosition) {
NS_ASSUME_NONNULL_BEGIN

/** @name A custom tool bar encapsulating messaging controls. */
@interface SLKTextInputbar : UIView
@interface SLKTextInputbar : UIToolbar

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@dzenbot @hipwelljo regression?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@dzenbot intentionally reverted that to UIToolbar

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see, thanks

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We did revert it back tho, in https://github.com/slackhq/SlackTextViewController/pull/619/files#diff-19e165dd48b58feca5abccfcedc9efd8R29

Using UIToolbar was still better for being able to extend the view to the very bottom on iPhone X. I would have liked moving away from UIToolbar but this seemed like the quickest and safest way of being iPhone X complaint.


/** The centered text input view.
The maximum number of lines is configured by default, to best fit each devices dimensions.
20 changes: 5 additions & 15 deletions Source/SLKTextInputbar.m
Original file line number Diff line number Diff line change
@@ -19,8 +19,6 @@

@interface SLKTextInputbar ()

@property (nonatomic, strong) UIView *hairlineView;

@property (nonatomic, strong) NSLayoutConstraint *textViewBottomMarginC;
@property (nonatomic, strong) NSLayoutConstraint *contentViewHC;
@property (nonatomic, strong) NSLayoutConstraint *leftButtonWC;
@@ -85,15 +83,17 @@ - (void)slk_commonInit
self.autoHideRightButton = YES;
self.editorContentViewHeight = 38.0;
self.contentInset = UIEdgeInsetsMake(5.0, 8.0, 5.0, 8.0);
self.backgroundColor = [UIColor colorWithRed:247.0/255.0 green:247.0/255.0 blue:247.0/255.0 alpha:1.0]; //UIToolbar native bar tint color

// Since iOS 11, it is required to call -layoutSubviews before adding custom subviews
// so private UIToolbar subviews don't interfere on the touch hierarchy
[self layoutSubviews];

[self addSubview:self.editorContentView];
[self addSubview:self.leftButton];
[self addSubview:self.rightButton];
[self addSubview:self.textView];
[self addSubview:self.charCountLabel];
[self addSubview:self.contentView];
[self addSubview:self.hairlineView];

[self slk_setupViewConstraints];
[self slk_updateConstraintConstants];
@@ -156,16 +156,6 @@ - (SLKTextView *)textView
return _textView;
}

- (UIView *)hairlineView
{
if (!_hairlineView) {
_hairlineView = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, [UIScreen mainScreen].bounds.size.width, 0.5)];
_hairlineView.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleBottomMargin;
_hairlineView.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.3];
}
return _hairlineView;
}

- (UIView *)contentView
{
if (!_contentView) {
@@ -422,7 +412,7 @@ - (NSUInteger)slk_defaultNumberOfLines

- (void)setBackgroundColor:(UIColor *)color
{
[super setBackgroundColor:color];
self.barTintColor = color;

self.editorContentView.backgroundColor = color;
}