Skip to content

Commit

Permalink
引入友盟分享SDK
Browse files Browse the repository at this point in the history
  • Loading branch information
wujunyang committed Jan 26, 2016
1 parent 711bde0 commit 5ebc8de
Show file tree
Hide file tree
Showing 727 changed files with 22,940 additions and 1,019 deletions.
64 changes: 32 additions & 32 deletions MobileProject.xcodeproj/project.pbxproj

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ @implementation TPKeyboardAvoidingCollectionView
#pragma mark - Setup/Teardown

- (void)setup {
if ( [self hasAutomaticKeyboardAvoidingBehaviour] ) return;

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(TPKeyboardAvoiding_keyboardWillShow:) name:UIKeyboardWillChangeFrameNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(TPKeyboardAvoiding_keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(scrollToActiveTextField) name:UITextViewTextDidBeginEditingNotification object:nil];
Expand Down Expand Up @@ -45,6 +47,18 @@ -(void)dealloc {
#endif
}


-(BOOL)hasAutomaticKeyboardAvoidingBehaviour {
if ( [[[UIDevice currentDevice] systemVersion] integerValue] >= 9
&& [self.delegate isKindOfClass:[UICollectionViewController class]] ) {
// Theory: It looks like iOS 9's collection views automatically avoid the keyboard. As usual
// Apple have totally failed to document this anywhere, so this is just a guess.
return YES;
}

return NO;
}

-(void)setFrame:(CGRect)frame {
[super setFrame:frame];
[self TPKeyboardAvoiding_updateContentInset];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,9 @@ @interface TPKeyboardAvoidingState : NSObject
@property (nonatomic, assign) BOOL keyboardVisible;
@property (nonatomic, assign) CGRect keyboardRect;
@property (nonatomic, assign) CGSize priorContentSize;


@property (nonatomic) BOOL priorPagingEnabled;
@property (nonatomic, assign) BOOL priorPagingEnabled;
@property (nonatomic, assign) BOOL ignoringNotifications;
@property(nonatomic, assign) BOOL keyboardAnimationInProgress;
@end

@implementation UIScrollView (TPKeyboardAvoidingAdditions)
Expand All @@ -50,9 +50,7 @@ - (void)TPKeyboardAvoiding_keyboardWillShow:(NSNotification*)notification {

TPKeyboardAvoidingState *state = self.keyboardAvoidingState;

UIView *firstResponder = [self TPKeyboardAvoiding_findFirstResponderBeneathView:self];

if ( !firstResponder ) {
if ( state.ignoringNotifications ) {
return;
}

Expand All @@ -79,31 +77,53 @@ - (void)TPKeyboardAvoiding_keyboardWillShow:(NSNotification*)notification {

// Shrink view's inset by the keyboard's height, and scroll to show the text field/view being edited
[UIView beginAnimations:nil context:NULL];

[UIView setAnimationDelegate:self];
[UIView setAnimationWillStartSelector:@selector(keyboardViewAppear:context:)];
[UIView setAnimationDidStopSelector:@selector(keyboardViewDisappear:finished:context:)];

[UIView setAnimationCurve:[[[notification userInfo] objectForKey:UIKeyboardAnimationCurveUserInfoKey] intValue]];
[UIView setAnimationDuration:[[[notification userInfo] objectForKey:UIKeyboardAnimationDurationUserInfoKey] floatValue]];

self.contentInset = [self TPKeyboardAvoiding_contentInsetForKeyboard];

CGFloat viewableHeight = self.bounds.size.height - self.contentInset.top - self.contentInset.bottom;
[self setContentOffset:CGPointMake(self.contentOffset.x,
[self TPKeyboardAvoiding_idealOffsetForView:firstResponder
withViewingAreaHeight:viewableHeight])
animated:NO];
UIView *firstResponder = [self TPKeyboardAvoiding_findFirstResponderBeneathView:self];
if ( firstResponder ) {
CGFloat viewableHeight = self.bounds.size.height - self.contentInset.top - self.contentInset.bottom;
[self setContentOffset:CGPointMake(self.contentOffset.x,
[self TPKeyboardAvoiding_idealOffsetForView:firstResponder
withViewingAreaHeight:viewableHeight])
animated:NO];
}

self.scrollIndicatorInsets = self.contentInset;
[self layoutIfNeeded];

[UIView commitAnimations];
}

- (void)keyboardViewAppear:(NSString *)animationID context:(void *)context {
self.keyboardAvoidingState.keyboardAnimationInProgress = true;
}

- (void)keyboardViewDisappear:(NSString *)animationID finished:(BOOL)finished context:(void *)context {
if (finished) {
self.keyboardAvoidingState.keyboardAnimationInProgress = false;
}
}

- (void)TPKeyboardAvoiding_keyboardWillHide:(NSNotification*)notification {
CGRect keyboardRect = [self convertRect:[[[notification userInfo] objectForKey:_UIKeyboardFrameEndUserInfoKey] CGRectValue] fromView:nil];
if (CGRectIsEmpty(keyboardRect)) {
if (CGRectIsEmpty(keyboardRect) && !self.keyboardAvoidingState.keyboardAnimationInProgress) {
return;
}

TPKeyboardAvoidingState *state = self.keyboardAvoidingState;

if ( state.ignoringNotifications ) {
return;
}

if ( !state.keyboardVisible ) {
return;
}
Expand Down Expand Up @@ -153,7 +173,12 @@ - (BOOL)TPKeyboardAvoiding_focusNextTextField {
UIView *view = [self TPKeyboardAvoiding_findNextInputViewAfterView:firstResponder beneathView:self];

if ( view ) {
[view performSelector:@selector(becomeFirstResponder) withObject:nil afterDelay:0.0];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0), dispatch_get_main_queue(), ^{
TPKeyboardAvoidingState *state = self.keyboardAvoidingState;
state.ignoringNotifications = YES;
[view becomeFirstResponder];
state.ignoringNotifications = NO;
});
return YES;
}

Expand All @@ -165,15 +190,27 @@ -(void)TPKeyboardAvoiding_scrollToActiveTextField {

if ( !state.keyboardVisible ) return;

UIView *firstResponder = [self TPKeyboardAvoiding_findFirstResponderBeneathView:self];
if ( !firstResponder ) {
return;
}
// Ignore any keyboard notification that occur while we scroll
// (seems to be an iOS 9 bug that causes jumping text in UITextField)
state.ignoringNotifications = YES;

CGFloat visibleSpace = self.bounds.size.height - self.contentInset.top - self.contentInset.bottom;

CGPoint idealOffset = CGPointMake(self.contentOffset.x, [self TPKeyboardAvoiding_idealOffsetForView:[self TPKeyboardAvoiding_findFirstResponderBeneathView:self]
withViewingAreaHeight:visibleSpace]);
CGPoint idealOffset
= CGPointMake(self.contentOffset.x,
[self TPKeyboardAvoiding_idealOffsetForView:firstResponder
withViewingAreaHeight:visibleSpace]);

// Ordinarily we'd use -setContentOffset:animated:YES here, but it interferes with UIScrollView
// behavior which automatically ensures that the first responder is within its bounds
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[self setContentOffset:idealOffset animated:YES];

state.ignoringNotifications = NO;
});
}

Expand Down Expand Up @@ -228,8 +265,18 @@ - (CGFloat)TPKeyboardAvoiding_nextInputViewHeuristicForViewFrame:(CGRect)frame {
+ (-frame.origin.x); // Prefer elements closest to left
}

- (BOOL)TPKeyboardAvoiding_viewHiddenOrUserInteractionNotEnabled:(UIView *)view {
while ( view ) {
if ( view.hidden || !view.userInteractionEnabled ) {
return YES;
}
view = view.superview;
}
return NO;
}

- (BOOL)TPKeyboardAvoiding_viewIsValidKeyViewCandidate:(UIView *)view {
if ( view.hidden || !view.userInteractionEnabled ) return NO;
if ( [self TPKeyboardAvoiding_viewHiddenOrUserInteractionNotEnabled:view] ) return NO;

if ( [view isKindOfClass:[UITextField class]] && ((UITextField*)view).enabled ) {
return YES;
Expand Down
3 changes: 2 additions & 1 deletion Podfile
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,5 @@ pod 'FMDB/SQLCipher', '~>2.5'
pod 'CocoaLumberjack', '~> 2.0.0-rc'
pod 'BaiduMapKit' #百度地图SDK
pod 'UMengAnalytics-NO-IDFA'#友盟统计无IDFA版SDK
pod 'GTSDK' #个推SDK
pod 'GTSDK' #个推SDK
pod 'UMengSocial', '~> 4.3' #友盟社会化分享及第三方登录
3 changes: 3 additions & 0 deletions Podfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ PODS:
- SQLCipher/standard (3.1.0):
- SQLCipher/common
- UMengAnalytics-NO-IDFA (3.6.7)
- UMengSocial (4.4)

DEPENDENCIES:
- AFNetworking (~> 2.6.0)
Expand All @@ -57,6 +58,7 @@ DEPENDENCIES:
- Masonry (~> 0.6.1)
- SDWebImage (~> 3.7)
- UMengAnalytics-NO-IDFA
- UMengSocial (~> 4.3)

SPEC CHECKSUMS:
AFNetworking: cb8d14a848e831097108418f5d49217339d4eb60
Expand All @@ -69,5 +71,6 @@ SPEC CHECKSUMS:
SDWebImage: 69c6303e3348fba97e03f65d65d4fbc26740f461
SQLCipher: 4684434d5791db86512cd7e02172aefba575849e
UMengAnalytics-NO-IDFA: 6d02561a00579b2e37718f204eb81347df5d7b8b
UMengSocial: aba7296602310385114d82c255539a7bef3b7ab0

COCOAPODS: 0.38.2
1 change: 1 addition & 0 deletions Pods/Headers/Private/UMengSocial/APOpenAPI.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Pods/Headers/Private/UMengSocial/APOpenAPIObject.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Pods/Headers/Private/UMengSocial/UMSocial.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Pods/Headers/Private/UMengSocial/UMSocialAccountManager.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Pods/Headers/Private/UMengSocial/UMSocialBar.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Pods/Headers/Private/UMengSocial/UMSocialConfig.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Pods/Headers/Private/UMengSocial/UMSocialData.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Pods/Headers/Private/UMengSocial/UMSocialDataService.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Pods/Headers/Private/UMengSocial/UMSocialFacebookHandler.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Pods/Headers/Private/UMengSocial/UMSocialLaiwangHandler.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Pods/Headers/Private/UMengSocial/UMSocialLineHandler.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Pods/Headers/Private/UMengSocial/UMSocialQQHandler.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Pods/Headers/Private/UMengSocial/UMSocialSinaHandler.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Pods/Headers/Private/UMengSocial/UMSocialSinaSSOHandler.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Pods/Headers/Private/UMengSocial/UMSocialSnsData.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Pods/Headers/Private/UMengSocial/UMSocialSnsService.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Pods/Headers/Private/UMengSocial/UMSocialTumblrHandler.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Pods/Headers/Private/UMengSocial/UMSocialTwitterHandler.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Pods/Headers/Private/UMengSocial/UMSocialWechatHandler.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Pods/Headers/Private/UMengSocial/UMSocialWhatsappHandler.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Pods/Headers/Private/UMengSocial/WBHttpRequest+WeiboGame.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Pods/Headers/Private/UMengSocial/WBHttpRequest+WeiboUser.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Pods/Headers/Private/UMengSocial/WBHttpRequest.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Pods/Headers/Private/UMengSocial/WBSDKBasicButton.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Pods/Headers/Private/UMengSocial/WBSDKCommentButton.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Pods/Headers/Private/UMengSocial/WBSDKRelationshipButton.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Pods/Headers/Private/UMengSocial/WXApi.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Pods/Headers/Private/UMengSocial/WXApiObject.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Pods/Headers/Private/UMengSocial/WeiboSDK.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Pods/Headers/Private/UMengSocial/WeiboUser.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Pods/Headers/Public/UMengSocial/APOpenAPI.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Pods/Headers/Public/UMengSocial/APOpenAPIObject.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Pods/Headers/Public/UMengSocial/UMSocial.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Pods/Headers/Public/UMengSocial/UMSocialAccountManager.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Pods/Headers/Public/UMengSocial/UMSocialBar.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Pods/Headers/Public/UMengSocial/UMSocialConfig.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Pods/Headers/Public/UMengSocial/UMSocialData.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Pods/Headers/Public/UMengSocial/UMSocialDataService.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Pods/Headers/Public/UMengSocial/UMSocialFacebookHandler.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Pods/Headers/Public/UMengSocial/UMSocialInstagramHandler.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Pods/Headers/Public/UMengSocial/UMSocialLaiwangHandler.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Pods/Headers/Public/UMengSocial/UMSocialLineHandler.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Pods/Headers/Public/UMengSocial/UMSocialQQHandler.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Pods/Headers/Public/UMengSocial/UMSocialSinaHandler.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Pods/Headers/Public/UMengSocial/UMSocialSinaSSOHandler.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Pods/Headers/Public/UMengSocial/UMSocialSnsData.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Pods/Headers/Public/UMengSocial/UMSocialSnsService.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Pods/Headers/Public/UMengSocial/UMSocialTumblrHandler.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Pods/Headers/Public/UMengSocial/UMSocialTwitterHandler.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Pods/Headers/Public/UMengSocial/UMSocialWechatHandler.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Pods/Headers/Public/UMengSocial/UMSocialWhatsappHandler.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Pods/Headers/Public/UMengSocial/WBHttpRequest+WeiboGame.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Pods/Headers/Public/UMengSocial/WBHttpRequest+WeiboShare.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 5ebc8de

Please sign in to comment.