Skip to content
This repository has been archived by the owner on Mar 9, 2022. It is now read-only.

Commit

Permalink
Fix iOS7 and iOS8 incompatibility issues
Browse files Browse the repository at this point in the history
* Fix iOS7 and iOS7 UISplitViewController incompatibility issues

* Fix Storyboard warnnings due to unavailable attributes in iOS7

* Fix iPad ImagePickerViewController popover display issue in the portrait mode
  • Loading branch information
pasin committed Oct 16, 2014
1 parent da5dd29 commit 378b9ec
Show file tree
Hide file tree
Showing 6 changed files with 95 additions and 45 deletions.
6 changes: 6 additions & 0 deletions ToDoLite/AppDelegate.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,12 @@

@property (strong, nonatomic, readonly) NSString *currentUserId;

// For UISplitViewController
@property (readonly, strong, nonatomic) UIPopoverController *popoverController;

// For UISplitViewController (iOS7)
@property (readonly, strong, nonatomic) UIBarButtonItem *displayModeButtonItem;

- (void)loginAsGuest;

- (void)loginWithFacebook:(void (^)(BOOL success, NSError *error))result;
Expand Down
55 changes: 33 additions & 22 deletions ToDoLite/AppDelegate.m
Original file line number Diff line number Diff line change
Expand Up @@ -69,35 +69,19 @@ - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceAppl

- (void)replaceRootViewController:(UIViewController *)controller {
if ([controller isKindOfClass:[UISplitViewController class]]) {
// Setup SplitViewController to work correctly on both iPhone and iPad
// Setup SplitViewController
UISplitViewController *splitViewController = (UISplitViewController *)controller;
// Support both iOS7 and iOS8
UIViewController *targetController = nil;
if ([[splitViewController.viewControllers lastObject] isKindOfClass:[UINavigationController class]]) {
UINavigationController *navigationController = [splitViewController.viewControllers lastObject];
targetController = navigationController.topViewController;
} else {
targetController = [splitViewController.viewControllers lastObject];
if ([[[UIDevice currentDevice] systemVersion] compare:@"8.0" options:NSNumericSearch] != NSOrderedAscending) {
if ([[splitViewController.viewControllers lastObject] isKindOfClass:[UINavigationController class]]) {
UINavigationController *navigationController = [splitViewController.viewControllers lastObject];
navigationController.topViewController.navigationItem.leftBarButtonItem = splitViewController.displayModeButtonItem;
}
}
targetController.navigationItem.leftBarButtonItem = splitViewController.displayModeButtonItem;
splitViewController.delegate = self;
}
self.window.rootViewController = controller;
}

#pragma mark - Split view

- (BOOL)splitViewController:(UISplitViewController *)splitViewController collapseSecondaryViewController:(UIViewController *)secondaryViewController ontoPrimaryViewController:(UIViewController *)primaryViewController {
if ([secondaryViewController isKindOfClass:[UINavigationController class]] &&
[[(UINavigationController *)secondaryViewController topViewController] isKindOfClass:[DetailViewController class]] &&
([(DetailViewController *)[(UINavigationController *)secondaryViewController topViewController] list] == nil)) {
// Return YES to indicate that we have handled the collapse by doing nothing; the secondary controller will be discarded.
return YES;
} else {
return NO;
}
}

#pragma mark - Properties

- (NSString *)currentUserId {
Expand Down Expand Up @@ -477,4 +461,31 @@ - (void)facebookSessionStateChanged:(FBSession *)session state:(FBSessionState)
}
}

#pragma mark - Split view

- (BOOL)splitViewController:(UISplitViewController *)splitViewController collapseSecondaryViewController:(UIViewController *)secondaryViewController ontoPrimaryViewController:(UIViewController *)primaryViewController {
if ([secondaryViewController isKindOfClass:[UINavigationController class]] &&
[[(UINavigationController *)secondaryViewController topViewController] isKindOfClass:[DetailViewController class]] &&
([(DetailViewController *)[(UINavigationController *)secondaryViewController topViewController] list] == nil)) {
return YES;
} else {
return NO;
}
}

- (void)splitViewController:(UISplitViewController *)splitViewController
willHideViewController:(UIViewController *)viewController
withBarButtonItem:(UIBarButtonItem *)barButtonItem
forPopoverController:(UIPopoverController *)popoverController {

if ([[[UIDevice currentDevice] systemVersion] compare:@"8.0" options:NSNumericSearch] == NSOrderedAscending) {
// For iOS7
UINavigationController *navigationController = [splitViewController.viewControllers lastObject];
navigationController.topViewController.navigationItem.leftBarButtonItem = barButtonItem;
}

_popoverController = popoverController;
_displayModeButtonItem = barButtonItem;
}

@end
7 changes: 6 additions & 1 deletion ToDoLite/Base.lproj/LaunchScreen.xib
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="6245" systemVersion="14A379a" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="6245" systemVersion="14A386a" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES">
<dependencies>
<deployment defaultVersion="1792" identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="6238"/>
<capability name="Constraints with non-1.0 multipliers" minToolsVersion="5.1"/>
</dependencies>
Expand All @@ -25,16 +26,20 @@
<constraints>
<constraint firstItem="kId-c2-rCX" firstAttribute="centerY" secondItem="iN0-l3-epB" secondAttribute="bottom" multiplier="1/3" constant="1" id="5cJ-9S-tgC"/>
<constraint firstAttribute="centerX" secondItem="kId-c2-rCX" secondAttribute="centerX" id="Koa-jz-hwk"/>
<constraint firstAttribute="centerX" secondItem="kId-c2-rCX" secondAttribute="centerX" id="MQM-Am-fCs"/>
<constraint firstAttribute="centerX" secondItem="kId-c2-rCX" secondAttribute="centerX" id="Wv7-Pl-PCk"/>
<constraint firstAttribute="centerY" secondItem="kId-c2-rCX" secondAttribute="centerY" id="fHJ-XM-E5y"/>
<constraint firstItem="kId-c2-rCX" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="20" symbolic="YES" id="fvb-Df-36g"/>
<constraint firstAttribute="centerY" secondItem="kId-c2-rCX" secondAttribute="centerY" id="snw-LW-bmx"/>
</constraints>
<nil key="simulatedStatusBarMetrics"/>
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
<variation key="default">
<mask key="constraints">
<exclude reference="5cJ-9S-tgC"/>
<exclude reference="Koa-jz-hwk"/>
<exclude reference="Wv7-Pl-PCk"/>
<exclude reference="fHJ-XM-E5y"/>
<exclude reference="fvb-Df-36g"/>
</mask>
</variation>
Expand Down
50 changes: 30 additions & 20 deletions ToDoLite/Base.lproj/Main.storyboard
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="6245" systemVersion="14A379a" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="PWY-sp-JlJ">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="6245" systemVersion="14A386a" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="PWY-sp-JlJ">
<dependencies>
<deployment defaultVersion="1808" identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="6238"/>
<capability name="Constraints to layout margins" minToolsVersion="6.0"/>
</dependencies>
<scenes>
<!--Master-->
Expand Down Expand Up @@ -94,7 +94,7 @@
<!--ToDo Lists-->
<scene sceneID="uVZ-Eu-5Bd">
<objects>
<viewController id="0pl-Gm-9PQ" customClass="MasterViewController" sceneMemberID="viewController">
<viewController title="ToDo Lists" id="0pl-Gm-9PQ" customClass="MasterViewController" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="cF7-Gm-X43"/>
<viewControllerLayoutGuide type="bottom" id="Yxi-qI-QSq"/>
Expand Down Expand Up @@ -134,10 +134,10 @@
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstItem="b4q-Vq-rxR" firstAttribute="top" secondItem="iQG-x6-4P5" secondAttribute="topMargin" id="Jdm-aD-gWG"/>
<constraint firstAttribute="trailingMargin" secondItem="b4q-Vq-rxR" secondAttribute="trailing" constant="-16" id="Nf0-5q-aug"/>
<constraint firstItem="b4q-Vq-rxR" firstAttribute="leading" secondItem="iQG-x6-4P5" secondAttribute="leadingMargin" constant="-16" id="OGI-U4-4kT"/>
<constraint firstItem="Yxi-qI-QSq" firstAttribute="top" secondItem="b4q-Vq-rxR" secondAttribute="bottom" id="Ycs-VS-5eb"/>
<constraint firstItem="Yxi-qI-QSq" firstAttribute="top" secondItem="b4q-Vq-rxR" secondAttribute="bottom" id="52c-Xt-dBY"/>
<constraint firstItem="b4q-Vq-rxR" firstAttribute="leading" secondItem="iQG-x6-4P5" secondAttribute="leading" id="OR6-Zm-O0J"/>
<constraint firstItem="b4q-Vq-rxR" firstAttribute="top" secondItem="iQG-x6-4P5" secondAttribute="top" id="SVr-jS-CTW"/>
<constraint firstAttribute="trailing" secondItem="b4q-Vq-rxR" secondAttribute="trailing" id="mcw-xn-BEw"/>
</constraints>
</view>
<navigationItem key="navigationItem" title="ToDo Lists" id="CLt-WO-ABc">
Expand Down Expand Up @@ -244,12 +244,19 @@
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="C4r-v3-xsb">
<rect key="frame" x="64" y="17" width="479" height="29"/>
<constraints>
<constraint firstAttribute="height" constant="29" id="geL-mU-P0B"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
<nil key="highlightedColor"/>
</label>
<button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="uAg-Zf-uRZ" customClass="RoundedButton">
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="uAg-Zf-uRZ" customClass="RoundedButton">
<rect key="frame" x="10" y="10" width="44" height="44"/>
<constraints>
<constraint firstAttribute="height" constant="44" id="Mmv-Uh-tKy"/>
<constraint firstAttribute="width" constant="44" id="gst-2G-qcw"/>
</constraints>
<state key="normal" image="Camera-Light">
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
</state>
Expand All @@ -259,10 +266,13 @@
</button>
</subviews>
<constraints>
<constraint firstItem="C4r-v3-xsb" firstAttribute="top" secondItem="SOV-5U-3TI" secondAttribute="topMargin" constant="9" id="8I4-yB-31J"/>
<constraint firstItem="C4r-v3-xsb" firstAttribute="leading" secondItem="SOV-5U-3TI" secondAttribute="leading" constant="64" id="Cv8-4v-Wj0"/>
<constraint firstAttribute="bottomMargin" secondItem="C4r-v3-xsb" secondAttribute="bottom" constant="9" id="hpq-rP-JS0"/>
<constraint firstAttribute="trailingMargin" secondItem="C4r-v3-xsb" secondAttribute="trailing" constant="10" id="mbF-hC-gbI"/>
<constraint firstItem="C4r-v3-xsb" firstAttribute="leading" secondItem="uAg-Zf-uRZ" secondAttribute="trailing" constant="10" id="QA1-Bw-8Bm"/>
<constraint firstItem="C4r-v3-xsb" firstAttribute="top" secondItem="SOV-5U-3TI" secondAttribute="top" constant="17" id="Zgu-qr-0JQ"/>
<constraint firstAttribute="bottom" secondItem="C4r-v3-xsb" secondAttribute="bottom" constant="17" id="eJB-Td-sWB"/>
<constraint firstItem="uAg-Zf-uRZ" firstAttribute="top" secondItem="SOV-5U-3TI" secondAttribute="top" constant="10" id="j4b-Oo-r7E"/>
<constraint firstAttribute="trailing" secondItem="C4r-v3-xsb" secondAttribute="trailing" constant="18" id="l2B-rl-Slr"/>
<constraint firstItem="uAg-Zf-uRZ" firstAttribute="leading" secondItem="SOV-5U-3TI" secondAttribute="leading" constant="10" id="ldw-Q9-163"/>
<constraint firstAttribute="bottom" secondItem="uAg-Zf-uRZ" secondAttribute="bottom" constant="9" id="xwB-Du-auz"/>
</constraints>
</tableViewCellContentView>
<connections>
Expand All @@ -279,10 +289,10 @@
</subviews>
<color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>
<constraints>
<constraint firstItem="xkb-hT-88s" firstAttribute="top" secondItem="JcI-2b-brh" secondAttribute="bottom" id="Fuh-ju-cLd"/>
<constraint firstItem="JcI-2b-brh" firstAttribute="leading" secondItem="mRD-0p-gbi" secondAttribute="leadingMargin" constant="-16" id="M1F-4k-JlZ"/>
<constraint firstItem="JcI-2b-brh" firstAttribute="top" secondItem="mRD-0p-gbi" secondAttribute="topMargin" id="cgh-Lh-PAW"/>
<constraint firstAttribute="trailingMargin" secondItem="JcI-2b-brh" secondAttribute="trailing" constant="-16" id="guH-XS-2bP"/>
<constraint firstItem="JcI-2b-brh" firstAttribute="leading" secondItem="mRD-0p-gbi" secondAttribute="leading" id="3rX-w9-CzU"/>
<constraint firstItem="JcI-2b-brh" firstAttribute="top" secondItem="mRD-0p-gbi" secondAttribute="top" id="XTz-b1-MMm"/>
<constraint firstAttribute="trailing" secondItem="JcI-2b-brh" secondAttribute="trailing" id="de2-Sn-QqN"/>
<constraint firstItem="xkb-hT-88s" firstAttribute="top" secondItem="JcI-2b-brh" secondAttribute="bottom" id="laT-zh-5wN"/>
</constraints>
</view>
<navigationItem key="navigationItem" id="hOw-Ck-GAG">
Expand Down Expand Up @@ -328,10 +338,10 @@
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="trailing" secondItem="9DB-Ai-uQ3" secondAttribute="trailing" id="7ta-9o-hwx"/>
<constraint firstItem="fng-Cn-meY" firstAttribute="top" secondItem="9DB-Ai-uQ3" secondAttribute="bottom" id="HWf-6a-n5t"/>
<constraint firstItem="9DB-Ai-uQ3" firstAttribute="leading" secondItem="G8M-w0-DLX" secondAttribute="leading" id="Ls1-Sg-FKi"/>
<constraint firstItem="9DB-Ai-uQ3" firstAttribute="top" secondItem="G8M-w0-DLX" secondAttribute="top" id="cRu-MH-TXJ"/>
<constraint firstItem="9DB-Ai-uQ3" firstAttribute="leading" secondItem="G8M-w0-DLX" secondAttribute="leading" id="Geu-ab-UJc"/>
<constraint firstItem="9DB-Ai-uQ3" firstAttribute="top" secondItem="G8M-w0-DLX" secondAttribute="top" id="IVW-kg-yaK"/>
<constraint firstAttribute="trailing" secondItem="9DB-Ai-uQ3" secondAttribute="trailing" id="Wto-sW-tQv"/>
<constraint firstItem="fng-Cn-meY" firstAttribute="top" secondItem="9DB-Ai-uQ3" secondAttribute="bottom" id="qhV-Nw-0S6"/>
</constraints>
</view>
<connections>
Expand Down
8 changes: 7 additions & 1 deletion ToDoLite/DetailViewController.m
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,12 @@ - (void)setList:(List *)list {
_list = list;
[self configureView];
}

AppDelegate *app = [[UIApplication sharedApplication] delegate];
if ([[[UIDevice currentDevice] systemVersion] compare:@"8.0" options:NSNumericSearch] == NSOrderedAscending) {
self.navigationItem.leftBarButtonItem = app.displayModeButtonItem;
}
[[app popoverController] dismissPopoverAnimated:YES];
}

- (void)configureView {
Expand Down Expand Up @@ -131,7 +137,7 @@ - (void)displayImagePickerForSourceType:(UIImagePickerControllerSourceType)sourc
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad &&
sourceType == UIImagePickerControllerSourceTypePhotoLibrary) {
imagePickerPopover = [[UIPopoverController alloc] initWithContentViewController:picker];
[imagePickerPopover presentPopoverFromRect:self.view.bounds
[imagePickerPopover presentPopoverFromRect:CGRectMake(0, 360, 10, 10)
inView:self.view
permittedArrowDirections:UIPopoverArrowDirectionAny
animated:YES];
Expand Down
Loading

0 comments on commit 378b9ec

Please sign in to comment.