Skip to content

Instantly share code, notes, and snippets.

@jamiebriant
Created June 25, 2010 00:30
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save jamiebriant/452213 to your computer and use it in GitHub Desktop.
Save jamiebriant/452213 to your computer and use it in GitHub Desktop.
diff --git a/Build/Products/three20/Three20/.fix b/Build/Products/three20/Three20/.fix
new file mode 100644
index 0000000..e69de29
diff --git a/Build/Products/three20/Three20Core/.fix b/Build/Products/three20/Three20Core/.fix
new file mode 100644
index 0000000..e69de29
diff --git a/Build/Products/three20/Three20Network/.fix b/Build/Products/three20/Three20Network/.fix
new file mode 100644
index 0000000..e69de29
diff --git a/Build/Products/three20/Three20Style/.fix b/Build/Products/three20/Three20Style/.fix
new file mode 100644
index 0000000..e69de29
diff --git a/Build/Products/three20/Three20UI/.fix b/Build/Products/three20/Three20UI/.fix
new file mode 100644
index 0000000..e69de29
diff --git a/Build/Products/three20/Three20UICommon/.fix b/Build/Products/three20/Three20UICommon/.fix
new file mode 100644
index 0000000..e69de29
diff --git a/Build/Products/three20/Three20UINavigator/.fix b/Build/Products/three20/Three20UINavigator/.fix
new file mode 100644
index 0000000..e69de29
diff --git a/README.mdown b/README.mdown
index 264ca60..841cf63 100644
--- a/README.mdown
+++ b/README.mdown
@@ -1,6 +1,13 @@
Three20
=======
+**IMPORTANT**
+
+**The official three20 page now says to add all the Three20XXX projects to your XCode project. If you do this, you WILL get build errors at link time**
+
+Specifically you will get duplicate symbols in three20.a and three20ui.a etc. I am looking to see if there is a build fix for this, but why waste time adding 5 projects that are already included by the master project?
+
+
Three20 is a collection of iPhone UI classes, like a photo viewer, and general
utilities, like an HTTP disk cache. Three20 is derived from the
[Facebook iPhone app][], which is one of the most downloaded iPhone apps ever.
diff --git a/iphoneos32-runtime-checks.patch b/iphoneos32-runtime-checks.patch
new file mode 100644
index 0000000..30b221a
--- /dev/null
+++ b/iphoneos32-runtime-checks.patch
@@ -0,0 +1,223 @@
+Index: src/Three20UICommon/Sources/UIViewControllerAdditions.m
+===================================================================
+--- src/Three20UICommon/Sources/UIViewControllerAdditions.m (revision 1193)
++++ src/Three20UICommon/Sources/UIViewControllerAdditions.m (working copy)
+@@ -294,10 +294,14 @@
+ ///////////////////////////////////////////////////////////////////////////////////////////////////
+ - (void)showBars:(BOOL)show animated:(BOOL)animated {
+ #if __IPHONE_3_2 && __IPHONE_3_2 <= __IPHONE_OS_VERSION_MAX_ALLOWED
+- [[UIApplication sharedApplication] setStatusBarHidden:!show withAnimation:animated];
+-#else
+- [[UIApplication sharedApplication] setStatusBarHidden:!show animated:animated];
++ if (TTOSVersion() >= 3.2) {
++ [[UIApplication sharedApplication] setStatusBarHidden:!show withAnimation:animated];
++ }
++ else
+ #endif
++ {
++ [[UIApplication sharedApplication] setStatusBarHidden:!show animated:animated];
++ }
+
+ if (animated) {
+ [UIView beginAnimations:nil context:NULL];
+Index: src/Three20UICommon/Sources/TTBaseViewController.m
+===================================================================
+--- src/Three20UICommon/Sources/TTBaseViewController.m (revision 1193)
++++ src/Three20UICommon/Sources/TTBaseViewController.m (working copy)
+@@ -91,28 +91,34 @@
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////////
+ - (void)resizeForKeyboard:(NSNotification*)notification appearing:(BOOL)appearing {
++ CGRect keyboardBounds = CGRectZero;
++ BOOL animated = NO;
+ #if __IPHONE_3_2 && __IPHONE_3_2 <= __IPHONE_OS_VERSION_MAX_ALLOWED
+- CGRect keyboardStart;
+- [[notification.userInfo objectForKey:UIKeyboardFrameBeginUserInfoKey] getValue:&keyboardStart];
++ if (TTOSVersion() >= 3.2) {
++ CGRect keyboardStart;
++ [[notification.userInfo objectForKey:UIKeyboardFrameBeginUserInfoKey] getValue:&keyboardStart];
+
+- CGRect keyboardEnd;
+- [[notification.userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] getValue:&keyboardEnd];
++ CGRect keyboardEnd;
++ [[notification.userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] getValue:&keyboardEnd];
+
+- CGRect keyboardBounds = CGRectMake(0, 0, keyboardEnd.size.width, keyboardEnd.size.height);
++ keyboardBounds = CGRectMake(0, 0, keyboardEnd.size.width, keyboardEnd.size.height);
+
+- BOOL animated = keyboardStart.origin.y != keyboardEnd.origin.y;
+-#else
+- CGRect keyboardBounds;
+- [[notification.userInfo objectForKey:UIKeyboardBoundsUserInfoKey] getValue:&keyboardBounds];
++ animated = keyboardStart.origin.y != keyboardEnd.origin.y;
++ }
++ else
++#endif
++ {
++ [[notification.userInfo objectForKey:UIKeyboardBoundsUserInfoKey] getValue:&keyboardBounds];
+
+- CGPoint keyboardStart;
+- [[notification.userInfo objectForKey:UIKeyboardCenterBeginUserInfoKey] getValue:&keyboardStart];
++ CGPoint keyboardStart;
++ [[notification.userInfo objectForKey:UIKeyboardCenterBeginUserInfoKey] getValue:&keyboardStart];
+
+- CGPoint keyboardEnd;
+- [[notification.userInfo objectForKey:UIKeyboardCenterEndUserInfoKey] getValue:&keyboardEnd];
++ CGPoint keyboardEnd;
++ [[notification.userInfo objectForKey:UIKeyboardCenterEndUserInfoKey] getValue:&keyboardEnd];
+
+- BOOL animated = keyboardStart.y != keyboardEnd.y;
+-#endif
++ animated = keyboardStart.y != keyboardEnd.y;
++ }
++
+ if (animated) {
+ [UIView beginAnimations:nil context:nil];
+ [UIView setAnimationDuration:TT_TRANSITION_DURATION];
+@@ -287,15 +293,19 @@
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////////
+ - (void)keyboardDidShow:(NSNotification*)notification {
++ CGRect keyboardBounds;
+ #if __IPHONE_3_2 && __IPHONE_3_2 <= __IPHONE_OS_VERSION_MAX_ALLOWED
+- CGRect frameStart;
+- [[notification.userInfo objectForKey:UIKeyboardFrameBeginUserInfoKey] getValue:&frameStart];
++ if (TTOSVersion() >= 3.2) {
++ CGRect frameStart;
++ [[notification.userInfo objectForKey:UIKeyboardFrameBeginUserInfoKey] getValue:&frameStart];
+
+- CGRect keyboardBounds = CGRectMake(0, 0, frameStart.size.width, frameStart.size.height);
+-#else
+- CGRect keyboardBounds;
+- [[notification.userInfo objectForKey:UIKeyboardBoundsUserInfoKey] getValue:&keyboardBounds];
++ keyboardBounds = CGRectMake(0, 0, frameStart.size.width, frameStart.size.height);
++ }
++ else
+ #endif
++ {
++ [[notification.userInfo objectForKey:UIKeyboardBoundsUserInfoKey] getValue:&keyboardBounds];
++ }
+
+ [self keyboardDidAppear:YES withBounds:keyboardBounds];
+ }
+@@ -311,15 +321,19 @@
+
+ ///////////////////////////////////////////////////////////////////////////////////////////////////
+ - (void)keyboardWillHide:(NSNotification*)notification {
++ CGRect keyboardBounds;
+ #if __IPHONE_3_2 && __IPHONE_3_2 <= __IPHONE_OS_VERSION_MAX_ALLOWED
+- CGRect frameEnd;
+- [[notification.userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] getValue:&frameEnd];
++ if (TTOSVersion() >= 3.2) {
++ CGRect frameEnd;
++ [[notification.userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] getValue:&frameEnd];
+
+- CGRect keyboardBounds = CGRectMake(0, 0, frameEnd.size.width, frameEnd.size.height);
+-#else
+- CGRect keyboardBounds;
+- [[notification.userInfo objectForKey:UIKeyboardBoundsUserInfoKey] getValue:&keyboardBounds];
++ keyboardBounds = CGRectMake(0, 0, frameEnd.size.width, frameEnd.size.height);
++ }
++ else
+ #endif
++ {
++ [[notification.userInfo objectForKey:UIKeyboardBoundsUserInfoKey] getValue:&keyboardBounds];
++ }
+
+ [self keyboardWillDisappear:YES withBounds:keyboardBounds];
+ }
+Index: src/Three20UI/Sources/UIViewAdditions.m
+===================================================================
+--- src/Three20UI/Sources/UIViewAdditions.m (revision 1193)
++++ src/Three20UI/Sources/UIViewAdditions.m (working copy)
+@@ -453,27 +453,31 @@
+ - (NSDictionary *)userInfoForKeyboardNotification {
+ CGRect screenFrame = TTScreenBounds();
+ #if __IPHONE_3_2 && __IPHONE_3_2 <= __IPHONE_OS_VERSION_MAX_ALLOWED
+- CGSize keyboardSize = CGSizeMake(screenFrame.size.width, self.height);
+- CGRect frameBegin = CGRectMake(0, screenFrame.size.height + floor(self.height/2), keyboardSize.width, keyboardSize.height);
+- CGRect frameEnd = CGRectMake(0, screenFrame.size.height - floor(self.height/2), keyboardSize.width, keyboardSize.height);
++ if (TTOSVersion() >= 3.2) {
++ CGSize keyboardSize = CGSizeMake(screenFrame.size.width, self.height);
++ CGRect frameBegin = CGRectMake(0, screenFrame.size.height + floor(self.height/2), keyboardSize.width, keyboardSize.height);
++ CGRect frameEnd = CGRectMake(0, screenFrame.size.height - floor(self.height/2), keyboardSize.width, keyboardSize.height);
+
+- return [NSDictionary dictionaryWithObjectsAndKeys:
+- [NSValue valueWithCGRect:frameBegin], UIKeyboardFrameBeginUserInfoKey,
+- [NSValue valueWithCGRect:frameEnd], UIKeyboardFrameEndUserInfoKey,
+- nil];
+-#else
+- CGRect bounds = CGRectMake(0, 0, screenFrame.size.width, self.height);
+- CGPoint centerBegin = CGPointMake(floor(screenFrame.size.width/2 - self.width/2),
+- screenFrame.size.height + floor(self.height/2));
+- CGPoint centerEnd = CGPointMake(floor(screenFrame.size.width/2 - self.width/2),
+- screenFrame.size.height - floor(self.height/2));
++ return [NSDictionary dictionaryWithObjectsAndKeys:
++ [NSValue valueWithCGRect:frameBegin], UIKeyboardFrameBeginUserInfoKey,
++ [NSValue valueWithCGRect:frameEnd], UIKeyboardFrameEndUserInfoKey,
++ nil];
++ }
++ else
++#endif
++ {
++ CGRect bounds = CGRectMake(0, 0, screenFrame.size.width, self.height);
++ CGPoint centerBegin = CGPointMake(floor(screenFrame.size.width/2 - self.width/2),
++ screenFrame.size.height + floor(self.height/2));
++ CGPoint centerEnd = CGPointMake(floor(screenFrame.size.width/2 - self.width/2),
++ screenFrame.size.height - floor(self.height/2));
+
+- return [NSDictionary dictionaryWithObjectsAndKeys:
+- [NSValue valueWithCGRect:bounds], UIKeyboardBoundsUserInfoKey,
+- [NSValue valueWithCGPoint:centerBegin], UIKeyboardCenterBeginUserInfoKey,
+- [NSValue valueWithCGPoint:centerEnd], UIKeyboardCenterEndUserInfoKey,
+- nil];
+-#endif
++ return [NSDictionary dictionaryWithObjectsAndKeys:
++ [NSValue valueWithCGRect:bounds], UIKeyboardBoundsUserInfoKey,
++ [NSValue valueWithCGPoint:centerBegin], UIKeyboardCenterBeginUserInfoKey,
++ [NSValue valueWithCGPoint:centerEnd], UIKeyboardCenterEndUserInfoKey,
++ nil];
++ }
+ }
+
+
+Index: src/Three20UI/Sources/TTPostController.m
+===================================================================
+--- src/Three20UI/Sources/TTPostController.m (revision 1193)
++++ src/Three20UI/Sources/TTPostController.m (working copy)
+@@ -142,10 +142,14 @@
+ _originalStatusBarHidden = app.statusBarHidden;
+ if (!_originalStatusBarHidden) {
+ #if __IPHONE_3_2 && __IPHONE_3_2 <= __IPHONE_OS_VERSION_MAX_ALLOWED
+- [app setStatusBarHidden:NO withAnimation:YES];
+-#else
+- [app setStatusBarHidden:NO animated:YES];
++ if (TTOSVersion() >= 3.2) {
++ [app setStatusBarHidden:NO withAnimation:YES];
++ }
++ else
+ #endif
++ {
++ [app setStatusBarHidden:NO animated:YES];
++ }
+ [app setStatusBarStyle:UIStatusBarStyleBlackTranslucent animated:YES];
+ }
+ [_textView becomeFirstResponder];
+@@ -156,10 +160,14 @@
+ - (void)hideKeyboard {
+ UIApplication* app = [UIApplication sharedApplication];
+ #if __IPHONE_3_2 && __IPHONE_3_2 <= __IPHONE_OS_VERSION_MAX_ALLOWED
+- [app setStatusBarHidden:_originalStatusBarHidden withAnimation:YES];
+-#else
+- [app setStatusBarHidden:_originalStatusBarHidden animated:YES];
++ if (TTOSVersion() >= 3.2) {
++ [app setStatusBarHidden:_originalStatusBarHidden withAnimation:YES];
++ }
++ else
+ #endif
++ {
++ [app setStatusBarHidden:_originalStatusBarHidden animated:YES];
++ }
+ [app setStatusBarStyle:_originalStatusBarStyle animated:NO];
+ [_textView resignFirstResponder];
+ }
diff --git a/src/Three20/Three20.xcodeproj/project.pbxproj b/src/Three20/Three20.xcodeproj/project.pbxproj
index d6745e8..7f2920e 100755
--- a/src/Three20/Three20.xcodeproj/project.pbxproj
+++ b/src/Three20/Three20.xcodeproj/project.pbxproj
@@ -440,6 +440,9 @@
/* Begin PBXProject section */
29B97313FDCFA39411CA2CEA /* Project object */ = {
isa = PBXProject;
+ attributes = {
+ BuildIndependentTargetsInParallel = YES;
+ };
buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Three20" */;
compatibilityVersion = "Xcode 3.1";
hasScannedForEncodings = 1;
@@ -693,14 +696,16 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 6E64543D1184BE1B00F08CB1 /* Project.xcconfig */;
buildSettings = {
- ARCHS = "$(ARCHS_STANDARD_32_BIT)";
+ ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)";
GCC_C_LANGUAGE_STANDARD = c99;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 3.1.2;
ONLY_ACTIVE_ARCH = YES;
OTHER_LDFLAGS = "-ObjC";
PREBINDING = NO;
- SDKROOT = iphonesimulator3.0;
+ SDKROOT = iphoneos3.2;
+ TARGETED_DEVICE_FAMILY = "1,2";
};
name = Internal;
};
@@ -713,7 +718,6 @@
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PRECOMPILE_PREFIX_HEADER = NO;
GCC_PREPROCESSOR_DEFINITIONS = DEBUG;
- PREBINDING = NO;
RUN_CLANG_STATIC_ANALYZER = YES;
};
name = Internal;
@@ -747,7 +751,6 @@
GCC_DYNAMIC_NO_PIC = NO;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = DEBUG;
- PREBINDING = NO;
};
name = Debug;
};
@@ -758,7 +761,6 @@
COPY_PHASE_STRIP = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
GCC_ENABLE_FIX_AND_CONTINUE = NO;
- PREBINDING = NO;
ZERO_LINK = NO;
};
name = Release;
@@ -767,14 +769,16 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 6E64543D1184BE1B00F08CB1 /* Project.xcconfig */;
buildSettings = {
- ARCHS = "$(ARCHS_STANDARD_32_BIT)";
+ ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)";
GCC_C_LANGUAGE_STANDARD = c99;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 3.1.2;
ONLY_ACTIVE_ARCH = YES;
OTHER_LDFLAGS = "-ObjC";
PREBINDING = NO;
- SDKROOT = iphonesimulator3.0;
+ SDKROOT = iphoneos3.2;
+ TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
};
@@ -782,13 +786,16 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 6E64543D1184BE1B00F08CB1 /* Project.xcconfig */;
buildSettings = {
- ARCHS = "$(ARCHS_STANDARD_32_BIT)";
+ ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)";
GCC_C_LANGUAGE_STANDARD = c99;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 3.1.2;
+ ONLY_ACTIVE_ARCH = NO;
OTHER_LDFLAGS = "-ObjC";
PREBINDING = NO;
- SDKROOT = iphonesimulator3.0;
+ SDKROOT = iphoneos3.2;
+ TARGETED_DEVICE_FAMILY = "1,2";
};
name = Release;
};
diff --git a/src/Three20Core/Headers/CategoryFix.h b/src/Three20Core/Headers/CategoryFix.h
new file mode 100644
index 0000000..834cf81
--- /dev/null
+++ b/src/Three20Core/Headers/CategoryFix.h
@@ -0,0 +1,10 @@
+/*
+ * CategoryFix.h
+ * Three20Core
+ *
+ * Created by jamie on 6/11/10.
+ * Copyright 2010 binaryfinery.com. All rights reserved.
+ *
+ */
+
+#define FIX_CATEGORY_BUG(name) @interface FIXCATEGORYBUG ## name @end @implementation FIXCATEGORYBUG ## name @end
diff --git a/src/Three20Core/Sources/NSArrayAdditions.m b/src/Three20Core/Sources/NSArrayAdditions.m
index 96f97a3..b8bfd85 100644
--- a/src/Three20Core/Sources/NSArrayAdditions.m
+++ b/src/Three20Core/Sources/NSArrayAdditions.m
@@ -17,7 +17,7 @@
#import "Three20Core/NSArrayAdditions.h"
#import "Three20Core/NSObjectAdditions.h"
-
+#import "Three20Core/CategoryFix.h"
///////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -126,3 +126,5 @@
@end
+
+FIX_CATEGORY_BUG(NSArrayAdditions)
diff --git a/src/Three20Core/Sources/NSDataAdditions.m b/src/Three20Core/Sources/NSDataAdditions.m
index d50db48..569cda9 100644
--- a/src/Three20Core/Sources/NSDataAdditions.m
+++ b/src/Three20Core/Sources/NSDataAdditions.m
@@ -17,7 +17,7 @@
#import "Three20Core/NSDataAdditions.h"
#import <CommonCrypto/CommonDigest.h>
-
+#import "Three20Core/CategoryFix.h"
///////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -42,3 +42,5 @@
@end
+FIX_CATEGORY_BUG(NSDataAdditions)
+
diff --git a/src/Three20Core/Sources/NSDateAdditions.m b/src/Three20Core/Sources/NSDateAdditions.m
index 35c7c88..fdcefb6 100644
--- a/src/Three20Core/Sources/NSDateAdditions.m
+++ b/src/Three20Core/Sources/NSDateAdditions.m
@@ -252,3 +252,6 @@
@end
+
+#import "Three20Core/CategoryFix.h"
+FIX_CATEGORY_BUG(NSDateAdditions)
diff --git a/src/Three20Core/Sources/NSMutableArrayAdditions.m b/src/Three20Core/Sources/NSMutableArrayAdditions.m
index f208700..3033d06 100644
--- a/src/Three20Core/Sources/NSMutableArrayAdditions.m
+++ b/src/Three20Core/Sources/NSMutableArrayAdditions.m
@@ -17,7 +17,7 @@
#import "Three20Core/NSMutableArrayAdditions.h"
#import "Three20Core/TTGlobalCore.h"
-
+#import "Three20Core/CategoryFix.h"
///////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -37,3 +37,4 @@
@end
+FIX_CATEGORY_BUG( NSMutableArrayAdditions )
diff --git a/src/Three20Core/Sources/NSMutableDictionaryAdditions.m b/src/Three20Core/Sources/NSMutableDictionaryAdditions.m
index ee6d7bd..8756e70 100644
--- a/src/Three20Core/Sources/NSMutableDictionaryAdditions.m
+++ b/src/Three20Core/Sources/NSMutableDictionaryAdditions.m
@@ -38,3 +38,5 @@
@end
+#import "Three20Core/CategoryFix.h"
+FIX_CATEGORY_BUG(NSMutableDictionaryAdditions)
diff --git a/src/Three20Core/Sources/NSObjectAdditions.m b/src/Three20Core/Sources/NSObjectAdditions.m
index 3132ea2..757d97a 100644
--- a/src/Three20Core/Sources/NSObjectAdditions.m
+++ b/src/Three20Core/Sources/NSObjectAdditions.m
@@ -16,7 +16,7 @@
#import "Three20Core/NSObjectAdditions.h"
-
+#import "Three20Core/CategoryFix.h"
///////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -161,3 +161,5 @@
@end
+
+FIX_CATEGORY_BUG( NSObjectAdditions )
diff --git a/src/Three20Core/Sources/NSStringAdditions.m b/src/Three20Core/Sources/NSStringAdditions.m
index c42c31e..ee48bbb 100644
--- a/src/Three20Core/Sources/NSStringAdditions.m
+++ b/src/Three20Core/Sources/NSStringAdditions.m
@@ -140,3 +140,6 @@
@end
+#import "Three20Core/CategoryFix.h"
+FIX_CATEGORY_BUG(NSStringAdditions)
+
diff --git a/src/Three20Core/Three20Core.xcodeproj/project.pbxproj b/src/Three20Core/Three20Core.xcodeproj/project.pbxproj
index f8091af..b76afe8 100755
--- a/src/Three20Core/Three20Core.xcodeproj/project.pbxproj
+++ b/src/Three20Core/Three20Core.xcodeproj/project.pbxproj
@@ -43,6 +43,7 @@
6EB460DA1183D8CB00685649 /* libThree20Core.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BEF31F3A0F352DF5000DE5D2 /* libThree20Core.a */; };
6EDAE9C7118CA1720008133C /* TTGlobalCoreRects.h in Headers */ = {isa = PBXBuildFile; fileRef = 6EDAE9C6118CA1720008133C /* TTGlobalCoreRects.h */; settings = {ATTRIBUTES = (Public, ); }; };
6EDAE9C9118CA1790008133C /* TTGlobalCoreRects.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EDAE9C8118CA1790008133C /* TTGlobalCoreRects.m */; };
+ 7D0F232E11C41E3D00B2F14F /* CategoryFix.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D0F232D11C41E3D00B2F14F /* CategoryFix.h */; settings = {ATTRIBUTES = (Public, ); }; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@@ -98,6 +99,7 @@
6EC8E92411AB936D00A5AD2C /* README.mdown */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README.mdown; sourceTree = "<group>"; };
6EDAE9C6118CA1720008133C /* TTGlobalCoreRects.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TTGlobalCoreRects.h; path = Headers/TTGlobalCoreRects.h; sourceTree = "<group>"; };
6EDAE9C8118CA1790008133C /* TTGlobalCoreRects.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TTGlobalCoreRects.m; path = Sources/TTGlobalCoreRects.m; sourceTree = "<group>"; };
+ 7D0F232D11C41E3D00B2F14F /* CategoryFix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CategoryFix.h; path = Headers/CategoryFix.h; sourceTree = "<group>"; };
BEF31F3A0F352DF5000DE5D2 /* libThree20Core.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libThree20Core.a; sourceTree = BUILT_PRODUCTS_DIR; };
EB9E6C6210B6A8F800DE563C /* CoreUnitTests.octest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = CoreUnitTests.octest; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */
@@ -187,6 +189,7 @@
6ED117D21183BDBF0096AEBF /* Global */ = {
isa = PBXGroup;
children = (
+ 7D0F232D11C41E3D00B2F14F /* CategoryFix.h */,
6E178E771183C8D3003B099E /* TTCorePreprocessorMacros.h */,
6E178E781183C8DA003B099E /* TTGlobalCore.h */,
6E178E7B1183C8E5003B099E /* TTGlobalCore.m */,
@@ -293,6 +296,7 @@
6E6454561184BE8600F08CB1 /* Three20Core+Additions.h in Headers */,
6EDAE9C7118CA1720008133C /* TTGlobalCoreRects.h in Headers */,
6E607CF211AF2FE400C93CD4 /* TTEntityTables.h in Headers */,
+ 7D0F232E11C41E3D00B2F14F /* CategoryFix.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -444,14 +448,13 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 6E6454021184BDD500F08CB1 /* Project.xcconfig */;
buildSettings = {
- ARCHS = "$(ARCHS_STANDARD_32_BIT)";
+ ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)";
GCC_C_LANGUAGE_STANDARD = c99;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
ONLY_ACTIVE_ARCH = YES;
- OTHER_LDFLAGS = "-ObjC";
- PREBINDING = NO;
- SDKROOT = iphonesimulator3.0;
+ OTHER_LDFLAGS = "";
+ SDKROOT = iphoneos3.2;
};
name = Internal;
};
@@ -465,7 +468,6 @@
GCC_PRECOMPILE_PREFIX_HEADER = NO;
GCC_PREPROCESSOR_DEFINITIONS = DEBUG;
PREBINDING = NO;
- RUN_CLANG_STATIC_ANALYZER = YES;
};
name = Internal;
};
@@ -511,14 +513,13 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 6E6454021184BDD500F08CB1 /* Project.xcconfig */;
buildSettings = {
- ARCHS = "$(ARCHS_STANDARD_32_BIT)";
+ ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)";
GCC_C_LANGUAGE_STANDARD = c99;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
ONLY_ACTIVE_ARCH = YES;
- OTHER_LDFLAGS = "-ObjC";
- PREBINDING = NO;
- SDKROOT = iphonesimulator3.0;
+ OTHER_LDFLAGS = "";
+ SDKROOT = iphoneos3.2;
};
name = Debug;
};
@@ -526,14 +527,13 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 6E6454021184BDD500F08CB1 /* Project.xcconfig */;
buildSettings = {
- ARCHS = "$(ARCHS_STANDARD_32_BIT)";
+ ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)";
GCC_C_LANGUAGE_STANDARD = c99;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_CHECK_SWITCH_STATEMENTS = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- OTHER_LDFLAGS = "-ObjC";
- PREBINDING = NO;
- SDKROOT = iphonesimulator3.0;
+ OTHER_LDFLAGS = "";
+ SDKROOT = iphoneos3.2;
};
name = Release;
};
diff --git a/src/Three20Network/Sources/TTRequestLoader.m b/src/Three20Network/Sources/TTRequestLoader.m
index efdbc15..1652695 100644
--- a/src/Three20Network/Sources/TTRequestLoader.m
+++ b/src/Three20Network/Sources/TTRequestLoader.m
@@ -88,8 +88,12 @@ static const NSInteger kLoadMaxRetries = 2;
TTNetworkRequestStarted();
TTURLRequest* request = _requests.count == 1 ? [_requests objectAtIndex:0] : nil;
- NSURLRequest* URLRequest = [_queue createNSURLRequest:request URL:URL];
-
+
+#ifdef BINARYFINERY_COOKIE_HACK
+ NSURLRequest* URLRequest = [request createNSURLRequest];
+#else
+ NSURLRequest* URLRequest = [_queue createNSURLRequest:request URL:URL];
+#endif
_connection = [[NSURLConnection alloc] initWithRequest:URLRequest delegate:self];
}
diff --git a/src/Three20Network/Sources/TTURLRequest.m b/src/Three20Network/Sources/TTURLRequest.m
index e8d7cb4..f085454 100644
--- a/src/Three20Network/Sources/TTURLRequest.m
+++ b/src/Three20Network/Sources/TTURLRequest.m
@@ -150,7 +150,7 @@ static NSString* kStringBoundary = @"3i2ndDfv2rTHiSisAbouNdArYfORhtTPEefj3q2f";
///////////////////////////////////////////////////////////////////////////////////////////////////
-- (NSData*)generatePostBody {
+- (NSData*)generateMultipartPostBody {
NSMutableData* body = [NSMutableData data];
NSString* beginLine = [NSString stringWithFormat:@"\r\n--%@\r\n", kStringBoundary];
@@ -221,7 +221,17 @@ static NSString* kStringBoundary = @"3i2ndDfv2rTHiSisAbouNdArYfORhtTPEefj3q2f";
return body;
}
-
+- (NSData *)generateURLEncodedBody {
+ NSMutableString *body = [NSMutableString string];
+ for (NSString *key in [_parameters allKeys]) {
+ if (body.length > 0)
+ [body appendString:@"&"];
+ [body appendString:[NSString stringWithFormat:@"%@=%@",
+ [key stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding],
+ [[_parameters objectForKey:key] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]];
+ }
+ return [body dataUsingEncoding:NSUTF8StringEncoding];
+}
///////////////////////////////////////////////////////////////////////////////////////////////////
- (NSMutableDictionary*)parameters {
if (!_parameters) {
@@ -230,6 +240,17 @@ static NSString* kStringBoundary = @"3i2ndDfv2rTHiSisAbouNdArYfORhtTPEefj3q2f";
return _parameters;
}
+// JAB: Need to support URLEncoded messages
+- (NSData*)generatePostBody {
+ if ( [@"application/x-www-form-urlencoded" compare:_contentType] == NSOrderedSame )
+ {
+ return [self generateURLEncodedBody];
+ }
+ else {
+ return [self generateMultipartPostBody];
+ }
+}
+
///////////////////////////////////////////////////////////////////////////////////////////////////
- (NSData*)httpBody {
diff --git a/src/Three20Network/Three20Network.xcodeproj/project.pbxproj b/src/Three20Network/Three20Network.xcodeproj/project.pbxproj
index 59bfae8..2ef358b 100755
--- a/src/Three20Network/Three20Network.xcodeproj/project.pbxproj
+++ b/src/Three20Network/Three20Network.xcodeproj/project.pbxproj
@@ -529,14 +529,12 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 6E64541F1184BDF900F08CB1 /* Project.xcconfig */;
buildSettings = {
- ARCHS = "$(ARCHS_STANDARD_32_BIT)";
+ ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)";
GCC_C_LANGUAGE_STANDARD = c99;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
ONLY_ACTIVE_ARCH = YES;
- OTHER_LDFLAGS = "-ObjC";
- PREBINDING = NO;
- SDKROOT = iphonesimulator3.0;
+ SDKROOT = iphoneos3.2;
};
name = Internal;
};
@@ -549,8 +547,6 @@
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PRECOMPILE_PREFIX_HEADER = NO;
GCC_PREPROCESSOR_DEFINITIONS = DEBUG;
- PREBINDING = NO;
- RUN_CLANG_STATIC_ANALYZER = YES;
};
name = Internal;
};
@@ -592,7 +588,6 @@
GCC_DYNAMIC_NO_PIC = NO;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = DEBUG;
- PREBINDING = NO;
};
name = Debug;
};
@@ -603,7 +598,6 @@
COPY_PHASE_STRIP = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
GCC_ENABLE_FIX_AND_CONTINUE = NO;
- PREBINDING = NO;
ZERO_LINK = NO;
};
name = Release;
@@ -612,14 +606,12 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 6E64541F1184BDF900F08CB1 /* Project.xcconfig */;
buildSettings = {
- ARCHS = "$(ARCHS_STANDARD_32_BIT)";
+ ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)";
GCC_C_LANGUAGE_STANDARD = c99;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
ONLY_ACTIVE_ARCH = YES;
- OTHER_LDFLAGS = "-ObjC";
- PREBINDING = NO;
- SDKROOT = iphonesimulator3.0;
+ SDKROOT = iphoneos3.2;
};
name = Debug;
};
@@ -627,13 +619,11 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 6E64541F1184BDF900F08CB1 /* Project.xcconfig */;
buildSettings = {
- ARCHS = "$(ARCHS_STANDARD_32_BIT)";
+ ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)";
GCC_C_LANGUAGE_STANDARD = c99;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- OTHER_LDFLAGS = "-ObjC";
- PREBINDING = NO;
- SDKROOT = iphonesimulator3.0;
+ SDKROOT = iphoneos3.2;
};
name = Release;
};
diff --git a/src/Three20Style/Sources/UIColorAdditions.m b/src/Three20Style/Sources/UIColorAdditions.m
index f06f56b..f3aa172 100644
--- a/src/Three20Style/Sources/UIColorAdditions.m
+++ b/src/Three20Style/Sources/UIColorAdditions.m
@@ -15,7 +15,7 @@
//
#import "Three20Style/UIColorAdditions.h"
-
+#import "Three20Core/CategoryFix.h"
///////////////////////////////////////////////////////////////////////////////////////////////////
// Color algorithms from http://www.cs.rit.edu/~ncs/color/t_convert.html
@@ -210,3 +210,4 @@ void HSVtoRGB( float *r, float *g, float *b, float h, float s, float v ) {
@end
+FIX_CATEGORY_BUG( UIColorAdditions )
diff --git a/src/Three20Style/Sources/UIFontAdditions.m b/src/Three20Style/Sources/UIFontAdditions.m
index aba29f0..3f7cd27 100644
--- a/src/Three20Style/Sources/UIFontAdditions.m
+++ b/src/Three20Style/Sources/UIFontAdditions.m
@@ -32,3 +32,5 @@
}
@end
+#import "Three20Core/CategoryFix.h"
+FIX_CATEGORY_BUG(UIFontAdditions)
diff --git a/src/Three20Style/Sources/UIImageAdditions.m b/src/Three20Style/Sources/UIImageAdditions.m
index a9d5004..ca0dea9 100644
--- a/src/Three20Style/Sources/UIImageAdditions.m
+++ b/src/Three20Style/Sources/UIImageAdditions.m
@@ -15,7 +15,7 @@
//
#import "Three20Style/UIImageAdditions.h"
-
+#import "Three20Core/CategoryFix.h"
///////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -229,3 +229,6 @@
@end
+
+FIX_CATEGORY_BUG( UIImageAdditions )
+
diff --git a/src/Three20Style/Three20Style.xcodeproj/project.pbxproj b/src/Three20Style/Three20Style.xcodeproj/project.pbxproj
index 7d97656..721e7af 100755
--- a/src/Three20Style/Three20Style.xcodeproj/project.pbxproj
+++ b/src/Three20Style/Three20Style.xcodeproj/project.pbxproj
@@ -1058,14 +1058,13 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 6E64543D1184BE1B00F08CB1 /* Project.xcconfig */;
buildSettings = {
- ARCHS = "$(ARCHS_STANDARD_32_BIT)";
+ ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)";
GCC_C_LANGUAGE_STANDARD = c99;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
ONLY_ACTIVE_ARCH = YES;
- OTHER_LDFLAGS = "-ObjC";
- PREBINDING = NO;
- SDKROOT = iphonesimulator3.0;
+ OTHER_LDFLAGS = "";
+ SDKROOT = iphoneos3.2;
};
name = Internal;
};
@@ -1078,7 +1077,6 @@
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PRECOMPILE_PREFIX_HEADER = NO;
GCC_PREPROCESSOR_DEFINITIONS = DEBUG;
- PREBINDING = NO;
RUN_CLANG_STATIC_ANALYZER = YES;
};
name = Internal;
@@ -1112,7 +1110,6 @@
GCC_DYNAMIC_NO_PIC = NO;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = DEBUG;
- PREBINDING = NO;
};
name = Debug;
};
@@ -1123,7 +1120,6 @@
COPY_PHASE_STRIP = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
GCC_ENABLE_FIX_AND_CONTINUE = NO;
- PREBINDING = NO;
ZERO_LINK = NO;
};
name = Release;
@@ -1132,14 +1128,13 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 6E64543D1184BE1B00F08CB1 /* Project.xcconfig */;
buildSettings = {
- ARCHS = "$(ARCHS_STANDARD_32_BIT)";
+ ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)";
GCC_C_LANGUAGE_STANDARD = c99;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
ONLY_ACTIVE_ARCH = YES;
- OTHER_LDFLAGS = "-ObjC";
- PREBINDING = NO;
- SDKROOT = iphonesimulator3.0;
+ OTHER_LDFLAGS = "";
+ SDKROOT = iphoneos3.2;
};
name = Debug;
};
@@ -1147,13 +1142,12 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 6E64543D1184BE1B00F08CB1 /* Project.xcconfig */;
buildSettings = {
- ARCHS = "$(ARCHS_STANDARD_32_BIT)";
+ ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)";
GCC_C_LANGUAGE_STANDARD = c99;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- OTHER_LDFLAGS = "-ObjC";
- PREBINDING = NO;
- SDKROOT = iphonesimulator3.0;
+ OTHER_LDFLAGS = "";
+ SDKROOT = iphoneos3.2;
};
name = Release;
};
diff --git a/src/Three20UI/Sources/TTPostController.m b/src/Three20UI/Sources/TTPostController.m
index fe1b9fd..fb8bea1 100644
--- a/src/Three20UI/Sources/TTPostController.m
+++ b/src/Three20UI/Sources/TTPostController.m
@@ -142,10 +142,14 @@ static const CGFloat kMarginY = 6;
_originalStatusBarHidden = app.statusBarHidden;
if (!_originalStatusBarHidden) {
#if __IPHONE_3_2 && __IPHONE_3_2 <= __IPHONE_OS_VERSION_MAX_ALLOWED
- [app setStatusBarHidden:NO withAnimation:YES];
-#else
- [app setStatusBarHidden:NO animated:YES];
+ if (TTOSVersion() >= 3.2) {
+ [app setStatusBarHidden:NO withAnimation:YES];
+ }
+ else
#endif
+ {
+ [app setStatusBarHidden:NO animated:YES];
+ }
[app setStatusBarStyle:UIStatusBarStyleBlackTranslucent animated:YES];
}
[_textView becomeFirstResponder];
@@ -156,10 +160,14 @@ static const CGFloat kMarginY = 6;
- (void)hideKeyboard {
UIApplication* app = [UIApplication sharedApplication];
#if __IPHONE_3_2 && __IPHONE_3_2 <= __IPHONE_OS_VERSION_MAX_ALLOWED
- [app setStatusBarHidden:_originalStatusBarHidden withAnimation:YES];
-#else
- [app setStatusBarHidden:_originalStatusBarHidden animated:YES];
+ if (TTOSVersion() >= 3.2) {
+ [app setStatusBarHidden:_originalStatusBarHidden withAnimation:YES];
+ }
+ else
#endif
+ {
+ [app setStatusBarHidden:_originalStatusBarHidden animated:YES];
+ }
[app setStatusBarStyle:_originalStatusBarStyle animated:NO];
[_textView resignFirstResponder];
}
diff --git a/src/Three20UI/Sources/UINSObjectAdditions.m b/src/Three20UI/Sources/UINSObjectAdditions.m
index a236d62..f5f2dd8 100644
--- a/src/Three20UI/Sources/UINSObjectAdditions.m
+++ b/src/Three20UI/Sources/UINSObjectAdditions.m
@@ -45,3 +45,6 @@
@end
+
+#import "Three20Core/CategoryFix.h"
+FIX_CATEGORY_BUG( UINSObjectAdditions )
diff --git a/src/Three20UI/Sources/UINSStringAdditions.m b/src/Three20UI/Sources/UINSStringAdditions.m
index cac21ad..0da9317 100644
--- a/src/Three20UI/Sources/UINSStringAdditions.m
+++ b/src/Three20UI/Sources/UINSStringAdditions.m
@@ -55,3 +55,6 @@
@end
+
+#import "Three20Core/CategoryFix.h"
+FIX_CATEGORY_BUG(UINSStringAdditions)
diff --git a/src/Three20UI/Sources/UINavigationControllerAdditions.m b/src/Three20UI/Sources/UINavigationControllerAdditions.m
index 0c42f43..6cdf877 100644
--- a/src/Three20UI/Sources/UINavigationControllerAdditions.m
+++ b/src/Three20UI/Sources/UINavigationControllerAdditions.m
@@ -132,3 +132,6 @@
@end
+
+#import "Three20Core/CategoryFix.h"
+FIX_CATEGORY_BUG(UINavigationControllerAdditions)
diff --git a/src/Three20UI/Sources/UITabBarControllerAdditions.m b/src/Three20UI/Sources/UITabBarControllerAdditions.m
index 548c876..78ed2bf 100644
--- a/src/Three20UI/Sources/UITabBarControllerAdditions.m
+++ b/src/Three20UI/Sources/UITabBarControllerAdditions.m
@@ -122,3 +122,7 @@
@end
+#import "Three20Core/CategoryFix.h"
+
+#import "Three20Core/CategoryFix.h"
+FIX_CATEGORY_BUG( UITabBarControllerAdditions )
diff --git a/src/Three20UI/Sources/UITableViewAdditions.m b/src/Three20UI/Sources/UITableViewAdditions.m
index 5ce4ebe..ec5d570 100644
--- a/src/Three20UI/Sources/UITableViewAdditions.m
+++ b/src/Three20UI/Sources/UITableViewAdditions.m
@@ -134,3 +134,6 @@
@end
+
+#import "Three20Core/CategoryFix.h"
+FIX_CATEGORY_BUG(UITableViewAdditions)
diff --git a/src/Three20UI/Sources/UIToolbarAdditions.m b/src/Three20UI/Sources/UIToolbarAdditions.m
index 058a389..9ccaded 100644
--- a/src/Three20UI/Sources/UIToolbarAdditions.m
+++ b/src/Three20UI/Sources/UIToolbarAdditions.m
@@ -53,3 +53,7 @@
@end
+
+#import "Three20Core/CategoryFix.h"
+FIX_CATEGORY_BUG( UIToolbarAdditions )
+
diff --git a/src/Three20UI/Sources/UIViewAdditions.m b/src/Three20UI/Sources/UIViewAdditions.m
index 6ca0d13..76e165a 100644
--- a/src/Three20UI/Sources/UIViewAdditions.m
+++ b/src/Three20UI/Sources/UIViewAdditions.m
@@ -453,27 +453,31 @@
- (NSDictionary *)userInfoForKeyboardNotification {
CGRect screenFrame = TTScreenBounds();
#if __IPHONE_3_2 && __IPHONE_3_2 <= __IPHONE_OS_VERSION_MAX_ALLOWED
- CGSize keyboardSize = CGSizeMake(screenFrame.size.width, self.height);
- CGRect frameBegin = CGRectMake(0, screenFrame.size.height + floor(self.height/2), keyboardSize.width, keyboardSize.height);
- CGRect frameEnd = CGRectMake(0, screenFrame.size.height - floor(self.height/2), keyboardSize.width, keyboardSize.height);
-
- return [NSDictionary dictionaryWithObjectsAndKeys:
- [NSValue valueWithCGRect:frameBegin], UIKeyboardFrameBeginUserInfoKey,
- [NSValue valueWithCGRect:frameEnd], UIKeyboardFrameEndUserInfoKey,
- nil];
-#else
- CGRect bounds = CGRectMake(0, 0, screenFrame.size.width, self.height);
- CGPoint centerBegin = CGPointMake(floor(screenFrame.size.width/2 - self.width/2),
- screenFrame.size.height + floor(self.height/2));
- CGPoint centerEnd = CGPointMake(floor(screenFrame.size.width/2 - self.width/2),
- screenFrame.size.height - floor(self.height/2));
-
- return [NSDictionary dictionaryWithObjectsAndKeys:
- [NSValue valueWithCGRect:bounds], UIKeyboardBoundsUserInfoKey,
- [NSValue valueWithCGPoint:centerBegin], UIKeyboardCenterBeginUserInfoKey,
- [NSValue valueWithCGPoint:centerEnd], UIKeyboardCenterEndUserInfoKey,
- nil];
+ if (TTOSVersion() >= 3.2) {
+ CGSize keyboardSize = CGSizeMake(screenFrame.size.width, self.height);
+ CGRect frameBegin = CGRectMake(0, screenFrame.size.height + floor(self.height/2), keyboardSize.width, keyboardSize.height);
+ CGRect frameEnd = CGRectMake(0, screenFrame.size.height - floor(self.height/2), keyboardSize.width, keyboardSize.height);
+
+ return [NSDictionary dictionaryWithObjectsAndKeys:
+ [NSValue valueWithCGRect:frameBegin], UIKeyboardFrameBeginUserInfoKey,
+ [NSValue valueWithCGRect:frameEnd], UIKeyboardFrameEndUserInfoKey,
+ nil];
+ }
+ else
#endif
+ {
+ CGRect bounds = CGRectMake(0, 0, screenFrame.size.width, self.height);
+ CGPoint centerBegin = CGPointMake(floor(screenFrame.size.width/2 - self.width/2),
+ screenFrame.size.height + floor(self.height/2));
+ CGPoint centerEnd = CGPointMake(floor(screenFrame.size.width/2 - self.width/2),
+ screenFrame.size.height - floor(self.height/2));
+
+ return [NSDictionary dictionaryWithObjectsAndKeys:
+ [NSValue valueWithCGRect:bounds], UIKeyboardBoundsUserInfoKey,
+ [NSValue valueWithCGPoint:centerBegin], UIKeyboardCenterBeginUserInfoKey,
+ [NSValue valueWithCGPoint:centerEnd], UIKeyboardCenterEndUserInfoKey,
+ nil];
+ }
}
@@ -548,3 +552,8 @@
@end
+
+
+#import "Three20Core/CategoryFix.h"
+FIX_CATEGORY_BUG( UIViewAdditions )
+
diff --git a/src/Three20UI/Sources/UIWebViewAdditions.m b/src/Three20UI/Sources/UIWebViewAdditions.m
index eeeaa93..d1e451e 100644
--- a/src/Three20UI/Sources/UIWebViewAdditions.m
+++ b/src/Three20UI/Sources/UIWebViewAdditions.m
@@ -67,3 +67,7 @@
@end
+
+#import "Three20Core/CategoryFix.h"
+FIX_CATEGORY_BUG(UIWebViewAdditions)
+
diff --git a/src/Three20UI/Three20UI.xcodeproj/project.pbxproj b/src/Three20UI/Three20UI.xcodeproj/project.pbxproj
index 2b95a2b..4709c97 100755
--- a/src/Three20UI/Three20UI.xcodeproj/project.pbxproj
+++ b/src/Three20UI/Three20UI.xcodeproj/project.pbxproj
@@ -2213,14 +2213,14 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 6E64543D1184BE1B00F08CB1 /* Project.xcconfig */;
buildSettings = {
- ARCHS = "$(ARCHS_STANDARD_32_BIT)";
+ ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)";
GCC_C_LANGUAGE_STANDARD = c99;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
ONLY_ACTIVE_ARCH = YES;
OTHER_LDFLAGS = "-ObjC";
PREBINDING = NO;
- SDKROOT = iphonesimulator3.0;
+ SDKROOT = iphoneos3.2;
};
name = Internal;
};
@@ -2287,14 +2287,14 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 6E64543D1184BE1B00F08CB1 /* Project.xcconfig */;
buildSettings = {
- ARCHS = "$(ARCHS_STANDARD_32_BIT)";
+ ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)";
GCC_C_LANGUAGE_STANDARD = c99;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
ONLY_ACTIVE_ARCH = YES;
OTHER_LDFLAGS = "-ObjC";
PREBINDING = NO;
- SDKROOT = iphonesimulator3.0;
+ SDKROOT = iphoneos3.2;
};
name = Debug;
};
@@ -2302,13 +2302,13 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 6E64543D1184BE1B00F08CB1 /* Project.xcconfig */;
buildSettings = {
- ARCHS = "$(ARCHS_STANDARD_32_BIT)";
+ ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)";
GCC_C_LANGUAGE_STANDARD = c99;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
OTHER_LDFLAGS = "-ObjC";
PREBINDING = NO;
- SDKROOT = iphonesimulator3.0;
+ SDKROOT = iphoneos3.2;
};
name = Release;
};
diff --git a/src/Three20UICommon/Sources/TTBaseViewController.m b/src/Three20UICommon/Sources/TTBaseViewController.m
index d5b505d..45815bc 100644
--- a/src/Three20UICommon/Sources/TTBaseViewController.m
+++ b/src/Three20UICommon/Sources/TTBaseViewController.m
@@ -91,28 +91,34 @@
///////////////////////////////////////////////////////////////////////////////////////////////////
- (void)resizeForKeyboard:(NSNotification*)notification appearing:(BOOL)appearing {
+ CGRect keyboardBounds = CGRectZero;
+ BOOL animated = NO;
#if __IPHONE_3_2 && __IPHONE_3_2 <= __IPHONE_OS_VERSION_MAX_ALLOWED
- CGRect keyboardStart;
- [[notification.userInfo objectForKey:UIKeyboardFrameBeginUserInfoKey] getValue:&keyboardStart];
+ if (TTOSVersion() >= 3.2) {
+ CGRect keyboardStart;
+ [[notification.userInfo objectForKey:UIKeyboardFrameBeginUserInfoKey] getValue:&keyboardStart];
- CGRect keyboardEnd;
- [[notification.userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] getValue:&keyboardEnd];
+ CGRect keyboardEnd;
+ [[notification.userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] getValue:&keyboardEnd];
- CGRect keyboardBounds = CGRectMake(0, 0, keyboardEnd.size.width, keyboardEnd.size.height);
+ keyboardBounds = CGRectMake(0, 0, keyboardEnd.size.width, keyboardEnd.size.height);
- BOOL animated = keyboardStart.origin.y != keyboardEnd.origin.y;
-#else
- CGRect keyboardBounds;
- [[notification.userInfo objectForKey:UIKeyboardBoundsUserInfoKey] getValue:&keyboardBounds];
+ animated = keyboardStart.origin.y != keyboardEnd.origin.y;
+ }
+ else
+#endif
+ {
+ [[notification.userInfo objectForKey:UIKeyboardBoundsUserInfoKey] getValue:&keyboardBounds];
- CGPoint keyboardStart;
- [[notification.userInfo objectForKey:UIKeyboardCenterBeginUserInfoKey] getValue:&keyboardStart];
+ CGPoint keyboardStart;
+ [[notification.userInfo objectForKey:UIKeyboardCenterBeginUserInfoKey] getValue:&keyboardStart];
- CGPoint keyboardEnd;
- [[notification.userInfo objectForKey:UIKeyboardCenterEndUserInfoKey] getValue:&keyboardEnd];
+ CGPoint keyboardEnd;
+ [[notification.userInfo objectForKey:UIKeyboardCenterEndUserInfoKey] getValue:&keyboardEnd];
+
+ animated = keyboardStart.y != keyboardEnd.y;
+ }
- BOOL animated = keyboardStart.y != keyboardEnd.y;
-#endif
if (animated) {
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:TT_TRANSITION_DURATION];
@@ -287,15 +293,19 @@
///////////////////////////////////////////////////////////////////////////////////////////////////
- (void)keyboardDidShow:(NSNotification*)notification {
+ CGRect keyboardBounds;
#if __IPHONE_3_2 && __IPHONE_3_2 <= __IPHONE_OS_VERSION_MAX_ALLOWED
- CGRect frameStart;
- [[notification.userInfo objectForKey:UIKeyboardFrameBeginUserInfoKey] getValue:&frameStart];
+ if (TTOSVersion() >= 3.2) {
+ CGRect frameStart;
+ [[notification.userInfo objectForKey:UIKeyboardFrameBeginUserInfoKey] getValue:&frameStart];
- CGRect keyboardBounds = CGRectMake(0, 0, frameStart.size.width, frameStart.size.height);
-#else
- CGRect keyboardBounds;
- [[notification.userInfo objectForKey:UIKeyboardBoundsUserInfoKey] getValue:&keyboardBounds];
+ keyboardBounds = CGRectMake(0, 0, frameStart.size.width, frameStart.size.height);
+ }
+ else
#endif
+ {
+ [[notification.userInfo objectForKey:UIKeyboardBoundsUserInfoKey] getValue:&keyboardBounds];
+ }
[self keyboardDidAppear:YES withBounds:keyboardBounds];
}
@@ -311,15 +321,19 @@
///////////////////////////////////////////////////////////////////////////////////////////////////
- (void)keyboardWillHide:(NSNotification*)notification {
+ CGRect keyboardBounds;
#if __IPHONE_3_2 && __IPHONE_3_2 <= __IPHONE_OS_VERSION_MAX_ALLOWED
- CGRect frameEnd;
- [[notification.userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] getValue:&frameEnd];
+ if (TTOSVersion() >= 3.2) {
+ CGRect frameEnd;
+ [[notification.userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] getValue:&frameEnd];
- CGRect keyboardBounds = CGRectMake(0, 0, frameEnd.size.width, frameEnd.size.height);
-#else
- CGRect keyboardBounds;
- [[notification.userInfo objectForKey:UIKeyboardBoundsUserInfoKey] getValue:&keyboardBounds];
+ keyboardBounds = CGRectMake(0, 0, frameEnd.size.width, frameEnd.size.height);
+ }
+ else
#endif
+ {
+ [[notification.userInfo objectForKey:UIKeyboardBoundsUserInfoKey] getValue:&keyboardBounds];
+ }
[self keyboardWillDisappear:YES withBounds:keyboardBounds];
}
diff --git a/src/Three20UICommon/Sources/UIViewControllerAdditions.m b/src/Three20UICommon/Sources/UIViewControllerAdditions.m
index 7ec5022..37911dc 100644
--- a/src/Three20UICommon/Sources/UIViewControllerAdditions.m
+++ b/src/Three20UICommon/Sources/UIViewControllerAdditions.m
@@ -28,7 +28,7 @@
#import "Three20Core/TTGlobalCore.h"
#import "Three20Core/TTDebug.h"
#import "Three20Core/TTDebugFlags.h"
-
+#import "Three20Core/CategoryFix.h"
static NSMutableDictionary* gSuperControllers = nil;
static NSMutableDictionary* gPopupViewControllers = nil;
@@ -294,10 +294,14 @@ static const NSTimeInterval kGarbageCollectionInterval = 20;
///////////////////////////////////////////////////////////////////////////////////////////////////
- (void)showBars:(BOOL)show animated:(BOOL)animated {
#if __IPHONE_3_2 && __IPHONE_3_2 <= __IPHONE_OS_VERSION_MAX_ALLOWED
- [[UIApplication sharedApplication] setStatusBarHidden:!show withAnimation:animated];
-#else
- [[UIApplication sharedApplication] setStatusBarHidden:!show animated:animated];
+ if (TTOSVersion() >= 3.2) {
+ [[UIApplication sharedApplication] setStatusBarHidden:!show withAnimation:animated];
+ }
+ else
#endif
+ {
+ [[UIApplication sharedApplication] setStatusBarHidden:!show animated:animated];
+ }
if (animated) {
[UIView beginAnimations:nil context:NULL];
@@ -377,3 +381,5 @@ static const NSTimeInterval kGarbageCollectionInterval = 20;
@end
+
+FIX_CATEGORY_BUG( UIViewControllerAdditions )
diff --git a/src/Three20UICommon/Sources/UIWindowAdditions.m b/src/Three20UICommon/Sources/UIWindowAdditions.m
index ccc64c3..9fa29d1 100644
--- a/src/Three20UICommon/Sources/UIWindowAdditions.m
+++ b/src/Three20UICommon/Sources/UIWindowAdditions.m
@@ -15,7 +15,7 @@
//
#import "Three20UICommon/UIWindowAdditions.h"
-
+#import "Three20Core/CategoryFix.h"
///////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -53,3 +53,5 @@
@end
+
+FIX_CATEGORY_BUG( UIWindowAdditions )
diff --git a/src/Three20UICommon/Three20UICommon.xcodeproj/project.pbxproj b/src/Three20UICommon/Three20UICommon.xcodeproj/project.pbxproj
index 369f23f..d009957 100755
--- a/src/Three20UICommon/Three20UICommon.xcodeproj/project.pbxproj
+++ b/src/Three20UICommon/Three20UICommon.xcodeproj/project.pbxproj
@@ -403,14 +403,12 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 6E64543D1184BE1B00F08CB1 /* Project.xcconfig */;
buildSettings = {
- ARCHS = "$(ARCHS_STANDARD_32_BIT)";
+ ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)";
GCC_C_LANGUAGE_STANDARD = c99;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
ONLY_ACTIVE_ARCH = YES;
- OTHER_LDFLAGS = "-ObjC";
- PREBINDING = NO;
- SDKROOT = iphonesimulator3.0;
+ SDKROOT = iphoneos3.2;
};
name = Internal;
};
@@ -423,7 +421,6 @@
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PRECOMPILE_PREFIX_HEADER = NO;
GCC_PREPROCESSOR_DEFINITIONS = DEBUG;
- PREBINDING = NO;
RUN_CLANG_STATIC_ANALYZER = YES;
};
name = Internal;
@@ -457,7 +454,6 @@
GCC_DYNAMIC_NO_PIC = NO;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = DEBUG;
- PREBINDING = NO;
};
name = Debug;
};
@@ -468,7 +464,6 @@
COPY_PHASE_STRIP = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
GCC_ENABLE_FIX_AND_CONTINUE = NO;
- PREBINDING = NO;
ZERO_LINK = NO;
};
name = Release;
@@ -477,14 +472,12 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 6E64543D1184BE1B00F08CB1 /* Project.xcconfig */;
buildSettings = {
- ARCHS = "$(ARCHS_STANDARD_32_BIT)";
+ ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)";
GCC_C_LANGUAGE_STANDARD = c99;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
ONLY_ACTIVE_ARCH = YES;
- OTHER_LDFLAGS = "-ObjC";
- PREBINDING = NO;
- SDKROOT = iphonesimulator3.0;
+ SDKROOT = iphoneos3.2;
};
name = Debug;
};
@@ -492,13 +485,11 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 6E64543D1184BE1B00F08CB1 /* Project.xcconfig */;
buildSettings = {
- ARCHS = "$(ARCHS_STANDARD_32_BIT)";
+ ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)";
GCC_C_LANGUAGE_STANDARD = c99;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- OTHER_LDFLAGS = "-ObjC";
- PREBINDING = NO;
- SDKROOT = iphonesimulator3.0;
+ SDKROOT = iphoneos3.2;
};
name = Release;
};
diff --git a/src/Three20UINavigator/Headers/UIViewController+TTNavigatorGarbageCollection.h b/src/Three20UINavigator/Headers/UIViewController+TTNavigatorGarbageCollection.h
index 1dc55b8..869e366 100644
--- a/src/Three20UINavigator/Headers/UIViewController+TTNavigatorGarbageCollection.h
+++ b/src/Three20UINavigator/Headers/UIViewController+TTNavigatorGarbageCollection.h
@@ -31,3 +31,4 @@
@end
+
diff --git a/src/Three20UINavigator/Sources/TTURLPatternInternal.m b/src/Three20UINavigator/Sources/TTURLPatternInternal.m
index 184ee4d..b7170b5 100644
--- a/src/Three20UINavigator/Sources/TTURLPatternInternal.m
+++ b/src/Three20UINavigator/Sources/TTURLPatternInternal.m
@@ -33,3 +33,6 @@
@end
+#import "Three20Core/CategoryFix.h"
+FIX_CATEGORY_BUG(TTURLPatternInternal)
+
diff --git a/src/Three20UINavigator/Sources/UIViewController+TTNavigator.m b/src/Three20UINavigator/Sources/UIViewController+TTNavigator.m
index 674f288..50eeb5d 100644
--- a/src/Three20UINavigator/Sources/UIViewController+TTNavigator.m
+++ b/src/Three20UINavigator/Sources/UIViewController+TTNavigator.m
@@ -189,3 +189,7 @@ static const NSTimeInterval kGarbageCollectionInterval = 20;
@end
+
+#import "Three20Core/CategoryFix.h"
+FIX_CATEGORY_BUG(UIViewControllerTTNavigator)
+
diff --git a/src/Three20UINavigator/Three20UINavigator.xcodeproj/project.pbxproj b/src/Three20UINavigator/Three20UINavigator.xcodeproj/project.pbxproj
index c9c33cc..3c4742c 100755
--- a/src/Three20UINavigator/Three20UINavigator.xcodeproj/project.pbxproj
+++ b/src/Three20UINavigator/Three20UINavigator.xcodeproj/project.pbxproj
@@ -662,14 +662,12 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 6E64543D1184BE1B00F08CB1 /* Project.xcconfig */;
buildSettings = {
- ARCHS = "$(ARCHS_STANDARD_32_BIT)";
+ ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)";
GCC_C_LANGUAGE_STANDARD = c99;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
ONLY_ACTIVE_ARCH = YES;
- OTHER_LDFLAGS = "-ObjC";
- PREBINDING = NO;
- SDKROOT = iphonesimulator3.0;
+ SDKROOT = iphoneos3.2;
};
name = Internal;
};
@@ -682,7 +680,6 @@
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PRECOMPILE_PREFIX_HEADER = NO;
GCC_PREPROCESSOR_DEFINITIONS = DEBUG;
- PREBINDING = NO;
RUN_CLANG_STATIC_ANALYZER = YES;
};
name = Internal;
@@ -716,7 +713,6 @@
GCC_DYNAMIC_NO_PIC = NO;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = DEBUG;
- PREBINDING = NO;
};
name = Debug;
};
@@ -727,7 +723,6 @@
COPY_PHASE_STRIP = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
GCC_ENABLE_FIX_AND_CONTINUE = NO;
- PREBINDING = NO;
ZERO_LINK = NO;
};
name = Release;
@@ -736,14 +731,12 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 6E64543D1184BE1B00F08CB1 /* Project.xcconfig */;
buildSettings = {
- ARCHS = "$(ARCHS_STANDARD_32_BIT)";
+ ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)";
GCC_C_LANGUAGE_STANDARD = c99;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
ONLY_ACTIVE_ARCH = YES;
- OTHER_LDFLAGS = "-ObjC";
- PREBINDING = NO;
- SDKROOT = iphonesimulator3.0;
+ SDKROOT = iphoneos3.2;
};
name = Debug;
};
@@ -751,13 +744,11 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 6E64543D1184BE1B00F08CB1 /* Project.xcconfig */;
buildSettings = {
- ARCHS = "$(ARCHS_STANDARD_32_BIT)";
+ ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)";
GCC_C_LANGUAGE_STANDARD = c99;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- OTHER_LDFLAGS = "-ObjC";
- PREBINDING = NO;
- SDKROOT = iphonesimulator3.0;
+ SDKROOT = iphoneos3.2;
};
name = Release;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment