Commit cd46bb24e6e3cf40366253ddad3e05ba2efc336b
1 parent
7597b958ff
Exists in
master
and in
1 other branch
Update and Fixbug
Showing 6 changed files with 89 additions and 88 deletions Side-by-side Diff
LifeLog/LifeLog.xcodeproj/project.pbxproj
| ... | ... | @@ -13,6 +13,10 @@ |
| 13 | 13 | 6E18CED81F2E3C840029891F /* ServerAPI.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E18CED71F2E3C840029891F /* ServerAPI.m */; }; |
| 14 | 14 | 6E18CEDC1F2E40F50029891F /* User.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E18CEDB1F2E40F50029891F /* User.m */; }; |
| 15 | 15 | 6E48AF0D1F2F9D3300C1D184 /* CustomTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E48AF0C1F2F9D3200C1D184 /* CustomTextField.m */; }; |
| 16 | + 6E7F93421F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E7F933B1F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.m */; }; | |
| 17 | + 6E7F93431F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E7F933D1F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.m */; }; | |
| 18 | + 6E7F93441F35872B00EFBC71 /* TPKeyboardAvoidingTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E7F933F1F35872B00EFBC71 /* TPKeyboardAvoidingTableView.m */; }; | |
| 19 | + 6E7F93451F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E7F93411F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.m */; }; | |
| 16 | 20 | 6E84E3761F27A701001EB88E /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3751F27A701001EB88E /* main.m */; }; |
| 17 | 21 | 6E84E3791F27A701001EB88E /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E84E3781F27A701001EB88E /* AppDelegate.m */; }; |
| 18 | 22 | 6E84E3811F27A701001EB88E /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6E84E3801F27A701001EB88E /* Assets.xcassets */; }; |
| ... | ... | @@ -73,6 +77,14 @@ |
| 73 | 77 | 6E18CEDD1F2E46570029891F /* Entities.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Entities.h; sourceTree = "<group>"; }; |
| 74 | 78 | 6E48AF0B1F2F9D3200C1D184 /* CustomTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CustomTextField.h; sourceTree = "<group>"; }; |
| 75 | 79 | 6E48AF0C1F2F9D3200C1D184 /* CustomTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CustomTextField.m; sourceTree = "<group>"; }; |
| 80 | + 6E7F933A1F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TPKeyboardAvoidingCollectionView.h; sourceTree = "<group>"; }; | |
| 81 | + 6E7F933B1F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TPKeyboardAvoidingCollectionView.m; sourceTree = "<group>"; }; | |
| 82 | + 6E7F933C1F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TPKeyboardAvoidingScrollView.h; sourceTree = "<group>"; }; | |
| 83 | + 6E7F933D1F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TPKeyboardAvoidingScrollView.m; sourceTree = "<group>"; }; | |
| 84 | + 6E7F933E1F35872B00EFBC71 /* TPKeyboardAvoidingTableView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TPKeyboardAvoidingTableView.h; sourceTree = "<group>"; }; | |
| 85 | + 6E7F933F1F35872B00EFBC71 /* TPKeyboardAvoidingTableView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TPKeyboardAvoidingTableView.m; sourceTree = "<group>"; }; | |
| 86 | + 6E7F93401F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIScrollView+TPKeyboardAvoidingAdditions.h"; sourceTree = "<group>"; }; | |
| 87 | + 6E7F93411F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIScrollView+TPKeyboardAvoidingAdditions.m"; sourceTree = "<group>"; }; | |
| 76 | 88 | 6E84E3711F27A700001EB88E /* LifeLog.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = LifeLog.app; sourceTree = BUILT_PRODUCTS_DIR; }; |
| 77 | 89 | 6E84E3751F27A701001EB88E /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; }; |
| 78 | 90 | 6E84E3771F27A701001EB88E /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; }; |
| ... | ... | @@ -185,6 +197,21 @@ |
| 185 | 197 | name = Model; |
| 186 | 198 | sourceTree = "<group>"; |
| 187 | 199 | }; |
| 200 | + 6E7F93391F35870F00EFBC71 /* TPKeyboardAvoiding */ = { | |
| 201 | + isa = PBXGroup; | |
| 202 | + children = ( | |
| 203 | + 6E7F933A1F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.h */, | |
| 204 | + 6E7F933B1F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.m */, | |
| 205 | + 6E7F933C1F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.h */, | |
| 206 | + 6E7F933D1F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.m */, | |
| 207 | + 6E7F933E1F35872B00EFBC71 /* TPKeyboardAvoidingTableView.h */, | |
| 208 | + 6E7F933F1F35872B00EFBC71 /* TPKeyboardAvoidingTableView.m */, | |
| 209 | + 6E7F93401F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.h */, | |
| 210 | + 6E7F93411F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.m */, | |
| 211 | + ); | |
| 212 | + name = TPKeyboardAvoiding; | |
| 213 | + sourceTree = "<group>"; | |
| 214 | + }; | |
| 188 | 215 | 6E84E3681F27A700001EB88E = { |
| 189 | 216 | isa = PBXGroup; |
| 190 | 217 | children = ( |
| ... | ... | @@ -339,6 +366,7 @@ |
| 339 | 366 | 6ECC406D1F2A5FA500AAEB97 /* Library */ = { |
| 340 | 367 | isa = PBXGroup; |
| 341 | 368 | children = ( |
| 369 | + 6E7F93391F35870F00EFBC71 /* TPKeyboardAvoiding */, | |
| 342 | 370 | 6ECC406E1F2A5FB200AAEB97 /* Category */, |
| 343 | 371 | ); |
| 344 | 372 | name = Library; |
| 345 | 373 | |
| 346 | 374 | |
| ... | ... | @@ -599,12 +627,16 @@ |
| 599 | 627 | buildActionMask = 2147483647; |
| 600 | 628 | files = ( |
| 601 | 629 | 6E18CED81F2E3C840029891F /* ServerAPI.m in Sources */, |
| 630 | + 6E7F93431F35872B00EFBC71 /* TPKeyboardAvoidingScrollView.m in Sources */, | |
| 631 | + 6E7F93421F35872B00EFBC71 /* TPKeyboardAvoidingCollectionView.m in Sources */, | |
| 602 | 632 | 9CBDA0FA1F2ECE2C0055DED1 /* BaseViewController.m in Sources */, |
| 603 | 633 | 6E8DA0F71F2BAC3400CCE941 /* TodayViewController.m in Sources */, |
| 634 | + 6E7F93451F35872B00EFBC71 /* UIScrollView+TPKeyboardAvoidingAdditions.m in Sources */, | |
| 604 | 635 | 6E48AF0D1F2F9D3300C1D184 /* CustomTextField.m in Sources */, |
| 605 | 636 | 6E84E3B01F27A975001EB88E /* HomeViewController.m in Sources */, |
| 606 | 637 | 6E84E3791F27A701001EB88E /* AppDelegate.m in Sources */, |
| 607 | 638 | 6E84E3BA1F27A9A0001EB88E /* RankingViewController.m in Sources */, |
| 639 | + 6E7F93441F35872B00EFBC71 /* TPKeyboardAvoidingTableView.m in Sources */, | |
| 608 | 640 | 6EDC8BF41F2C68D700765ACC /* CMMotionActivityExtra.m in Sources */, |
| 609 | 641 | 9CBDA0FF1F2F03810055DED1 /* RegisterViewController.m in Sources */, |
| 610 | 642 | 9CA8AEEA1F31BB4600C5FC74 /* ConfirmForgetPassViewController.m in Sources */, |
| ... | ... | @@ -768,6 +800,7 @@ |
| 768 | 800 | "-framework", |
| 769 | 801 | "\"CircleProgressBar\"", |
| 770 | 802 | "-all_load", |
| 803 | + "-ObjC", | |
| 771 | 804 | ); |
| 772 | 805 | PRODUCT_BUNDLE_IDENTIFIER = mobileworld.jp.lifelog; |
| 773 | 806 | PRODUCT_NAME = "$(TARGET_NAME)"; |
| ... | ... | @@ -791,6 +824,7 @@ |
| 791 | 824 | "-framework", |
| 792 | 825 | "\"CircleProgressBar\"", |
| 793 | 826 | "-all_load", |
| 827 | + "-ObjC", | |
| 794 | 828 | ); |
| 795 | 829 | PRODUCT_BUNDLE_IDENTIFIER = mobileworld.jp.lifelog; |
| 796 | 830 | PRODUCT_NAME = "$(TARGET_NAME)"; |
LifeLog/LifeLog/BaseViewController.h
| ... | ... | @@ -7,8 +7,12 @@ |
| 7 | 7 | // |
| 8 | 8 | |
| 9 | 9 | #import <UIKit/UIKit.h> |
| 10 | +#import "TPKeyboardAvoidingCollectionView.h" | |
| 11 | +#import "TPKeyboardAvoidingScrollView.h" | |
| 12 | +#import "TPKeyboardAvoidingTableView.h" | |
| 13 | +#import "UIScrollView+TPKeyboardAvoidingAdditions.h" | |
| 10 | 14 | |
| 11 | 15 | @interface BaseViewController : UIViewController |
| 12 | -@property (nonatomic, weak) IBOutlet UIScrollView *scrollView; | |
| 16 | +@property (nonatomic, weak) IBOutlet TPKeyboardAvoidingScrollView *scrollView; | |
| 13 | 17 | @end |
LifeLog/LifeLog/BaseViewController.m
| ... | ... | @@ -16,92 +16,12 @@ |
| 16 | 16 | |
| 17 | 17 | - (void)viewDidLoad { |
| 18 | 18 | [super viewDidLoad]; |
| 19 | - // Do any additional setup after loading the view. | |
| 20 | - NSNotificationCenter *center = [NSNotificationCenter defaultCenter]; | |
| 21 | - [center addObserver:self | |
| 22 | - selector:@selector(keyboardWillShow:) | |
| 23 | - name:UIKeyboardWillShowNotification | |
| 24 | - object:nil]; | |
| 25 | - [center addObserver:self | |
| 26 | - selector:@selector(keyboardWillHide:) | |
| 27 | - name:UIKeyboardWillHideNotification | |
| 28 | - object:nil]; | |
| 29 | - // self.scrollView.keyboardDismissMode = UIScrollViewKeyboardDismissModeOnDrag; | |
| 19 | + self.scrollView.keyboardDismissMode = UIScrollViewKeyboardDismissModeOnDrag; | |
| 30 | 20 | } |
| 31 | 21 | |
| 32 | 22 | - (void)didReceiveMemoryWarning { |
| 33 | 23 | [super didReceiveMemoryWarning]; |
| 34 | 24 | // Dispose of any resources that can be recreated. |
| 35 | -} | |
| 36 | - | |
| 37 | -#pragma mark - keyboard notifications | |
| 38 | - | |
| 39 | -- (void)keyboardWillShow:(NSNotification *)notification | |
| 40 | -{ | |
| 41 | - //Obtain Keyboard Position and Size Information - ใญใผใใผใใฎใใธใทใงใณใปใตใคใบใๅๅพ | |
| 42 | - CGRect keyboardFrame = [notification.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue]; | |
| 43 | - | |
| 44 | - // Add the keyboard size to the bottom content inset of the scroll view. | |
| 45 | - // ในใฏใญใผใซใใฅใผใฎๅบContentInsetใญใผใใผใใตใคใบใ่ฟฝๅ | |
| 46 | - UIEdgeInsets inset = self.scrollView.contentInset; | |
| 47 | - inset.bottom = keyboardFrame.size.height; | |
| 48 | - self.scrollView.contentInset = inset; | |
| 49 | - | |
| 50 | - UIEdgeInsets scrollInset = self.scrollView.scrollIndicatorInsets; | |
| 51 | - scrollInset.bottom = keyboardFrame.size.height; | |
| 52 | - self.scrollView.scrollIndicatorInsets = scrollInset; | |
| 53 | - | |
| 54 | - //Obtain First Responder - FirstResponderใๅ ฅๆ | |
| 55 | - UIView *currentFirstResponder = [self _findFirstResponder:self.scrollView]; | |
| 56 | - CGRect rectResponder = currentFirstResponder.frame; | |
| 57 | - | |
| 58 | - // Determine visible frame - ่กจ็คบใชใใฌใผใ ใ่จญๅฎ | |
| 59 | - CGRect visibleFrame = self.view.frame; | |
| 60 | - visibleFrame.size.height -= keyboardFrame.size.height; | |
| 61 | - | |
| 62 | - // Determine whether item is in visible frame - ใขใคใใ ใ่กจ็คบใใฌใผใ ๅ ใซใใใใฉใใใ็ขบ่ช | |
| 63 | - if (!CGRectContainsPoint(visibleFrame, rectResponder.origin) ) | |
| 64 | - { | |
| 65 | - [UIView beginAnimations:nil context:NULL]; | |
| 66 | - [UIView setAnimationDuration:[notification.userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue]]; | |
| 67 | - [UIView setAnimationCurve:[notification.userInfo[UIKeyboardAnimationCurveUserInfoKey] integerValue]]; | |
| 68 | - [UIView setAnimationBeginsFromCurrentState:YES]; | |
| 69 | - int scrollPointY = (rectResponder.origin.y - keyboardFrame.origin.y) + rectResponder.size.height + 5; | |
| 70 | - //5 = minor padding - 5ใฏใใคใใผใใใฃใณใฐ | |
| 71 | - CGPoint scrollPoint = CGPointMake(0.0, scrollPointY); | |
| 72 | - //Scroll to new point - ๆฐใใคใณใใซในใฏใญใผใซ | |
| 73 | - [self.scrollView setContentOffset:scrollPoint animated:YES]; | |
| 74 | - [UIView commitAnimations]; | |
| 75 | - } | |
| 76 | -} | |
| 77 | - | |
| 78 | - | |
| 79 | -- (void)keyboardWillHide:(NSNotification *)notification | |
| 80 | -{ | |
| 81 | - [UIView beginAnimations:nil context:NULL]; | |
| 82 | - [UIView setAnimationDuration:[notification.userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue]]; | |
| 83 | - [UIView setAnimationCurve:[notification.userInfo[UIKeyboardAnimationCurveUserInfoKey] integerValue]]; | |
| 84 | - [UIView setAnimationBeginsFromCurrentState:YES]; | |
| 85 | - UIEdgeInsets inset = self.scrollView.contentInset; | |
| 86 | - inset.bottom = 0; | |
| 87 | - self.scrollView.contentInset = inset; | |
| 88 | - | |
| 89 | - UIEdgeInsets scrollInset = self.scrollView.scrollIndicatorInsets; | |
| 90 | - scrollInset.bottom = 0; | |
| 91 | - self.scrollView.scrollIndicatorInsets = scrollInset; | |
| 92 | - | |
| 93 | - [self.scrollView setContentOffset:CGPointMake(0, -self.scrollView.contentInset.top) animated:YES]; | |
| 94 | - [UIView commitAnimations]; | |
| 95 | -} | |
| 96 | - | |
| 97 | -- (UIView *)_findFirstResponder:(UIView *)view | |
| 98 | -{ | |
| 99 | - for ( UIView *childView in view.subviews ) { | |
| 100 | - if ( [childView respondsToSelector:@selector(isFirstResponder)] && [childView isFirstResponder] ) return childView; | |
| 101 | - UIView *result = [self _findFirstResponder:childView]; | |
| 102 | - if ( result ) return result; | |
| 103 | - } | |
| 104 | - return nil; | |
| 105 | 25 | } |
| 106 | 26 | |
| 107 | 27 | @end |
LifeLog/LifeLog/LoginViewController.m
| ... | ... | @@ -54,7 +54,42 @@ |
| 54 | 54 | // Dispose of any resources that can be recreated. |
| 55 | 55 | } |
| 56 | 56 | |
| 57 | +- (BOOL)checkAllowLogin | |
| 58 | +{ | |
| 59 | + NSString *message = @""; | |
| 60 | + if (_tfEmail.text.length <= 0) { | |
| 61 | + message = @"Please input email"; | |
| 62 | + [Utilities showErrorMessage:message withViewController:self]; | |
| 63 | + return NO; | |
| 64 | + } | |
| 65 | + if (_tfPassword.text.length <= 0) { | |
| 66 | + message = @"Please input password"; | |
| 67 | + [Utilities showErrorMessage:message withViewController:self]; | |
| 68 | + return NO; | |
| 69 | + } | |
| 70 | + if (_tfEmail.text.length > 255) { | |
| 71 | + message = @"Email maximum length 255"; | |
| 72 | + [Utilities showErrorMessage:message withViewController:self]; | |
| 73 | + return NO; | |
| 74 | + } | |
| 75 | + if (_tfPassword.text.length < 6) { | |
| 76 | + message = @"Password minimum length 6"; | |
| 77 | + [Utilities showErrorMessage:message withViewController:self]; | |
| 78 | + return NO; | |
| 79 | + } | |
| 80 | + if (![_tfEmail.text containsString:@"@"]) { | |
| 81 | + message = @"Email invalid"; | |
| 82 | + [Utilities showErrorMessage:message withViewController:self]; | |
| 83 | + return NO; | |
| 84 | + } | |
| 85 | + return YES; | |
| 86 | +} | |
| 87 | + | |
| 57 | 88 | - (IBAction)buttonLoginTouchUpInside:(id)sender { |
| 89 | + [self resignTextField]; | |
| 90 | + if (![self checkAllowLogin]) { | |
| 91 | + return; | |
| 92 | + } | |
| 58 | 93 | LoginViewController __weak *weakSelf = self; |
| 59 | 94 | [[ServerAPI server] loginWithEmail:_tfEmail.text Password:_tfPassword.text CompletionHandler:^(User *user, NSString *token, NSError *error) { |
| 60 | 95 | if (error == nil) { |
| ... | ... | @@ -78,6 +113,7 @@ |
| 78 | 113 | } |
| 79 | 114 | |
| 80 | 115 | - (IBAction)buttonForgetTouchUpInside:(id)sender { |
| 116 | + [self resignTextField]; | |
| 81 | 117 | if (_tfEmail.text.length > 0) { |
| 82 | 118 | LoginViewController __weak *weakSelf = self; |
| 83 | 119 | [[ServerAPI server] forgetPass:_tfEmail.text CompletionHandler:^(NSError *error) { |
| 84 | 120 | |
| ... | ... | @@ -103,8 +139,15 @@ |
| 103 | 139 | } |
| 104 | 140 | |
| 105 | 141 | - (IBAction)buttonRegisterTouchUpInside:(id)sender { |
| 142 | + [self resignTextField]; | |
| 106 | 143 | RegisterViewController *registerVC = [[RegisterViewController alloc] initWithNibName:@"RegisterViewController" bundle:nil]; |
| 107 | 144 | [self.navigationController pushViewController:registerVC animated:YES]; |
| 145 | +} | |
| 146 | + | |
| 147 | +- (void)resignTextField | |
| 148 | +{ | |
| 149 | + [_tfEmail resignFirstResponder]; | |
| 150 | + [_tfPassword resignFirstResponder]; | |
| 108 | 151 | } |
| 109 | 152 | |
| 110 | 153 | @end |
LifeLog/LifeLog/LoginViewController.xib
| ... | ... | @@ -17,7 +17,7 @@ |
| 17 | 17 | <outlet property="lblEmail" destination="htO-UE-kfl" id="uI0-fA-HNf"/> |
| 18 | 18 | <outlet property="lblPassword" destination="alT-fI-Ydb" id="ayy-MY-olh"/> |
| 19 | 19 | <outlet property="lblRegister" destination="PUa-4y-ZZw" id="h8s-4C-dSb"/> |
| 20 | - <outlet property="scrollView" destination="Dce-dI-aNd" id="WVY-zf-L9x"/> | |
| 20 | + <outlet property="scrollView" destination="Dce-dI-aNd" id="ZTG-Qy-Y9x"/> | |
| 21 | 21 | <outlet property="tfEmail" destination="Y59-LM-Oyy" id="8GT-KF-g0W"/> |
| 22 | 22 | <outlet property="tfPassword" destination="EwF-NI-ZUZ" id="Wua-iL-Qim"/> |
| 23 | 23 | <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/> |
| ... | ... | @@ -28,7 +28,7 @@ |
| 28 | 28 | <rect key="frame" x="0.0" y="0.0" width="375" height="667"/> |
| 29 | 29 | <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> |
| 30 | 30 | <subviews> |
| 31 | - <scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" keyboardDismissMode="onDrag" translatesAutoresizingMaskIntoConstraints="NO" id="Dce-dI-aNd"> | |
| 31 | + <scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" keyboardDismissMode="onDrag" translatesAutoresizingMaskIntoConstraints="NO" id="Dce-dI-aNd" customClass="TPKeyboardAvoidingScrollView"> | |
| 32 | 32 | <rect key="frame" x="0.0" y="0.0" width="375" height="667"/> |
| 33 | 33 | <subviews> |
| 34 | 34 | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="e2G-8H-Nv8" userLabel="ViewContent"> |
LifeLog/LifeLog/RegisterViewController.xib
| 1 | 1 | <?xml version="1.0" encoding="UTF-8"?> |
| 2 | -<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="12120" systemVersion="16F73" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES"> | |
| 2 | +<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="12121" systemVersion="16G29" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES"> | |
| 3 | 3 | <device id="retina4_7" orientation="portrait"> |
| 4 | 4 | <adaptation id="fullscreen"/> |
| 5 | 5 | </device> |
| 6 | 6 | <dependencies> |
| 7 | - <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12088"/> | |
| 7 | + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12089"/> | |
| 8 | 8 | <capability name="Aspect ratio constraints" minToolsVersion="5.1"/> |
| 9 | 9 | <capability name="Constraints with non-1.0 multipliers" minToolsVersion="5.1"/> |
| 10 | 10 | <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> |
| ... | ... | @@ -31,7 +31,7 @@ |
| 31 | 31 | <outlet property="lblWeight" destination="pZE-Z0-mBT" id="f1V-oF-sTz"/> |
| 32 | 32 | <outlet property="lblWeightUnit" destination="ohe-eQ-W4K" id="ULW-e5-x5g"/> |
| 33 | 33 | <outlet property="physicalActivity" destination="taM-tm-4DU" id="tME-Dt-KP1"/> |
| 34 | - <outlet property="scrollView" destination="UVu-Gq-UFp" id="eaL-3k-Rqq"/> | |
| 34 | + <outlet property="scrollView" destination="UVu-Gq-UFp" id="rkl-8Y-3HJ"/> | |
| 35 | 35 | <outlet property="tfArea" destination="69Q-GU-kDs" id="l0M-1l-c9a"/> |
| 36 | 36 | <outlet property="tfBirthday" destination="fvl-fG-4tE" id="VYZ-I8-ZiG"/> |
| 37 | 37 | <outlet property="tfConfirmPassword" destination="tId-EG-K2l" id="6Gp-vW-don"/> |
| ... | ... | @@ -54,7 +54,7 @@ |
| 54 | 54 | <rect key="frame" x="0.0" y="0.0" width="375" height="667"/> |
| 55 | 55 | <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> |
| 56 | 56 | <subviews> |
| 57 | - <scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="UVu-Gq-UFp"> | |
| 57 | + <scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="UVu-Gq-UFp" customClass="TPKeyboardAvoidingScrollView"> | |
| 58 | 58 | <rect key="frame" x="0.0" y="0.0" width="375" height="667"/> |
| 59 | 59 | <subviews> |
| 60 | 60 | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="vxb-ck-Qak" userLabel="ViewContent"> |