chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,112 @@
|
||||
//
|
||||
// TLBaseKeyboard.m
|
||||
// TLChat
|
||||
//
|
||||
// Created by 李伯坤 on 16/8/8.
|
||||
// Copyright © 2016年 李伯坤. All rights reserved.
|
||||
//
|
||||
|
||||
#import "TLBaseKeyboard.h"
|
||||
|
||||
@implementation TLBaseKeyboard
|
||||
|
||||
#pragma mark - # Public Methods
|
||||
- (void)showWithAnimation:(BOOL)animation
|
||||
{
|
||||
[self showInView:[UIApplication sharedApplication].keyWindow withAnimation:animation];
|
||||
}
|
||||
|
||||
- (void)showInView:(UIView *)view withAnimation:(BOOL)animation
|
||||
{
|
||||
if (_isShow) {
|
||||
return;
|
||||
}
|
||||
_isShow = YES;
|
||||
if (self.keyboardDelegate && [self.keyboardDelegate respondsToSelector:@selector(chatKeyboardWillShow:animated:)]) {
|
||||
[self.keyboardDelegate chatKeyboardWillShow:self animated:animation];
|
||||
}
|
||||
[view addSubview:self];
|
||||
CGFloat keyboardHeight = [self keyboardHeight];
|
||||
[self mas_remakeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.and.right.mas_equalTo(view);
|
||||
make.height.mas_equalTo(keyboardHeight);
|
||||
make.bottom.mas_equalTo(view).mas_offset(keyboardHeight);
|
||||
}];
|
||||
[view layoutIfNeeded];
|
||||
|
||||
if (animation) {
|
||||
[UIView animateWithDuration:0.3 animations:^{
|
||||
[self mas_updateConstraints:^(MASConstraintMaker *make) {
|
||||
make.bottom.mas_equalTo(view);
|
||||
}];
|
||||
[view layoutIfNeeded];
|
||||
if (self.keyboardDelegate && [self.keyboardDelegate respondsToSelector:@selector(chatKeyboard:didChangeHeight:)]) {
|
||||
[self.keyboardDelegate chatKeyboard:self didChangeHeight:view.height - self.y];
|
||||
}
|
||||
} completion:^(BOOL finished) {
|
||||
if (self.keyboardDelegate && [self.keyboardDelegate respondsToSelector:@selector(chatKeyboardDidShow:animated:)]) {
|
||||
[self.keyboardDelegate chatKeyboardDidShow:self animated:animation];
|
||||
}
|
||||
}];
|
||||
}
|
||||
else {
|
||||
[self mas_updateConstraints:^(MASConstraintMaker *make) {
|
||||
make.bottom.mas_equalTo(view);
|
||||
}];
|
||||
[view layoutIfNeeded];
|
||||
if (self.keyboardDelegate && [self.keyboardDelegate respondsToSelector:@selector(chatKeyboardDidShow:animated:)]) {
|
||||
[self.keyboardDelegate chatKeyboardDidShow:self animated:animation];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (void)dismissWithAnimation:(BOOL)animation
|
||||
{
|
||||
if (!_isShow) {
|
||||
if (!animation) {
|
||||
[self removeFromSuperview];
|
||||
}
|
||||
return;
|
||||
}
|
||||
_isShow = NO;
|
||||
if (self.keyboardDelegate && [self.keyboardDelegate respondsToSelector:@selector(chatKeyboardWillDismiss:animated:)]) {
|
||||
[self.keyboardDelegate chatKeyboardWillDismiss:self animated:animation];
|
||||
}
|
||||
if (animation) {
|
||||
CGFloat keyboardHeight = [self keyboardHeight];
|
||||
[UIView animateWithDuration:0.3 animations:^{
|
||||
[self mas_updateConstraints:^(MASConstraintMaker *make) {
|
||||
make.bottom.mas_equalTo(self.superview).mas_offset(keyboardHeight);
|
||||
}];
|
||||
[self.superview layoutIfNeeded];
|
||||
if (self.keyboardDelegate && [self.keyboardDelegate respondsToSelector:@selector(chatKeyboard:didChangeHeight:)]) {
|
||||
[self.keyboardDelegate chatKeyboard:self didChangeHeight:self.superview.height - self.y];
|
||||
}
|
||||
} completion:^(BOOL finished) {
|
||||
[self removeFromSuperview];
|
||||
if (self.keyboardDelegate && [self.keyboardDelegate respondsToSelector:@selector(chatKeyboardDidDismiss:animated:)]) {
|
||||
[self.keyboardDelegate chatKeyboardDidDismiss:self animated:animation];
|
||||
}
|
||||
}];
|
||||
}
|
||||
else {
|
||||
[self removeFromSuperview];
|
||||
if (self.keyboardDelegate && [self.keyboardDelegate respondsToSelector:@selector(chatKeyboardDidDismiss:animated:)]) {
|
||||
[self.keyboardDelegate chatKeyboardDidDismiss:self animated:animation];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (void)reset
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
#pragma mark - # ZZKeyboardProtocol
|
||||
- (CGFloat)keyboardHeight
|
||||
{
|
||||
return HEIGHT_CHAT_KEYBOARD;
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
Reference in New Issue
Block a user