├── CustomCalloutSample ├── en.lproj │ ├── InfoPlist.strings │ ├── CustomCalloutSampleViewController.xib │ └── MainWindow.xib ├── main.m ├── CustomCalloutSample-Prefix.pch ├── CalloutAnnotation.m ├── CalloutAnnotation.h ├── PinAnnotation.m ├── CustomCalloutSampleAppDelegate.h ├── CustomCalloutSampleViewController.h ├── PinAnnotation.h ├── CalloutAnnotationView.h ├── CustomCalloutSample-Info.plist ├── CalloutAnnotationView.m ├── CustomCalloutSampleAppDelegate.m └── CustomCalloutSampleViewController.m ├── .gitignore └── CustomCalloutSample.xcodeproj ├── xcuserdata └── tochi.xcuserdatad │ ├── xcdebugger │ └── Breakpoints.xcbkptlist │ └── xcschemes │ ├── xcschememanagement.plist │ └── CustomCalloutSample.xcscheme ├── project.xcworkspace ├── contents.xcworkspacedata └── xcuserdata │ └── tochi.xcuserdatad │ └── UserInterfaceState.xcuserstate └── project.pbxproj /CustomCalloutSample/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # xcode noise 2 | build/* 3 | *.pbxuser 4 | *.mode1v3 5 | 6 | # old skool 7 | .svn 8 | 9 | # osx noise 10 | .DS_Store 11 | profile -------------------------------------------------------------------------------- /CustomCalloutSample.xcodeproj/xcuserdata/tochi.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /CustomCalloutSample.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /CustomCalloutSample.xcodeproj/project.xcworkspace/xcuserdata/tochi.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tochi/custom-callout-sample-for-iOS/HEAD/CustomCalloutSample.xcodeproj/project.xcworkspace/xcuserdata/tochi.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /CustomCalloutSample/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // CustomCalloutSample 4 | // 5 | // Created by tochi on 11/05/17. 6 | // Copyright 2011 aguuu,Inc. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | int main(int argc, char *argv[]) 12 | { 13 | NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 14 | int retVal = UIApplicationMain(argc, argv, nil, nil); 15 | [pool release]; 16 | return retVal; 17 | } 18 | -------------------------------------------------------------------------------- /CustomCalloutSample/CustomCalloutSample-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'CustomCalloutSample' target in the 'CustomCalloutSample' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_3_0 8 | #warning "This project uses features only available in iPhone SDK 3.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /CustomCalloutSample/CalloutAnnotation.m: -------------------------------------------------------------------------------- 1 | // 2 | // CalloutAnnotation.m 3 | // CustomCalloutSample 4 | // 5 | // Created by tochi on 11/05/17. 6 | // Copyright 2011 aguuu,Inc. All rights reserved. 7 | // 8 | 9 | #import "CalloutAnnotation.h" 10 | 11 | 12 | @implementation CalloutAnnotation 13 | @synthesize title=title_; 14 | @synthesize coordinate=coordinate_; 15 | 16 | - (void)dealloc 17 | { 18 | [title_ release], title_ = nil; 19 | [super dealloc]; 20 | } 21 | @end 22 | -------------------------------------------------------------------------------- /CustomCalloutSample/CalloutAnnotation.h: -------------------------------------------------------------------------------- 1 | // 2 | // CalloutAnnotation.h 3 | // CustomCalloutSample 4 | // 5 | // Created by tochi on 11/05/17. 6 | // Copyright 2011 aguuu,Inc. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | 13 | @interface CalloutAnnotation : NSObject 14 | { 15 | @private 16 | NSString *title_; 17 | CLLocationCoordinate2D coordinate_; 18 | } 19 | @property (nonatomic, retain) NSString *title; 20 | @property (nonatomic) CLLocationCoordinate2D coordinate; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /CustomCalloutSample/PinAnnotation.m: -------------------------------------------------------------------------------- 1 | // 2 | // PinAnnotation.m 3 | // CustomCalloutSample 4 | // 5 | // Created by tochi on 11/05/17. 6 | // Copyright 2011 aguuu,Inc. All rights reserved. 7 | // 8 | 9 | #import "PinAnnotation.h" 10 | 11 | 12 | @implementation PinAnnotation 13 | @synthesize title=title_; 14 | @synthesize coordinate=coordinate_; 15 | @synthesize calloutAnnotation=calloutAnnotation_; 16 | 17 | - (void)dealloc 18 | { 19 | [title_ release], title_ = nil; 20 | [calloutAnnotation_ release], calloutAnnotation_ = nil; 21 | [super dealloc]; 22 | } 23 | @end 24 | -------------------------------------------------------------------------------- /CustomCalloutSample/CustomCalloutSampleAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // CustomCalloutSampleAppDelegate.h 3 | // CustomCalloutSample 4 | // 5 | // Created by tochi on 11/05/17. 6 | // Copyright 2011 aguuu,Inc. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class CustomCalloutSampleViewController; 12 | 13 | @interface CustomCalloutSampleAppDelegate : NSObject { 14 | 15 | } 16 | 17 | @property (nonatomic, retain) IBOutlet UIWindow *window; 18 | 19 | @property (nonatomic, retain) IBOutlet CustomCalloutSampleViewController *viewController; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /CustomCalloutSample/CustomCalloutSampleViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // CustomCalloutSampleViewController.h 3 | // CustomCalloutSample 4 | // 5 | // Created by tochi on 11/05/17. 6 | // Copyright 2011 aguuu,Inc. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "PinAnnotation.h" 12 | #import "CalloutAnnotation.h" 13 | #import "CalloutAnnotationView.h" 14 | 15 | @interface CustomCalloutSampleViewController : UIViewController 17 | { 18 | @private 19 | MKMapView *mapView_; 20 | } 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /CustomCalloutSample.xcodeproj/xcuserdata/tochi.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | CustomCalloutSample.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | D903504C1381F76B002878D9 16 | 17 | primary 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /CustomCalloutSample/PinAnnotation.h: -------------------------------------------------------------------------------- 1 | // 2 | // PinAnnotation.h 3 | // CustomCalloutSample 4 | // 5 | // Created by tochi on 11/05/17. 6 | // Copyright 2011 aguuu,Inc. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "CalloutAnnotation.h" 12 | 13 | 14 | @interface PinAnnotation : NSObject 15 | { 16 | @private 17 | NSString *title_; 18 | CLLocationCoordinate2D coordinate_; 19 | CalloutAnnotation *calloutAnnotation_; 20 | } 21 | @property (nonatomic, retain) NSString *title; 22 | @property (nonatomic) CLLocationCoordinate2D coordinate; 23 | @property (nonatomic, retain) CalloutAnnotation *calloutAnnotation; 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /CustomCalloutSample/CalloutAnnotationView.h: -------------------------------------------------------------------------------- 1 | // 2 | // CalloutAnnotationView.h 3 | // CustomCalloutSample 4 | // 5 | // Created by tochi on 11/05/17. 6 | // Copyright 2011 aguuu,Inc. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @protocol CalloutAnnotationViewDelegate; 13 | @interface CalloutAnnotationView : MKAnnotationView 14 | { 15 | @private 16 | NSString *title_; 17 | UILabel *titleLabel_; 18 | UIButton *button_; 19 | } 20 | @property (nonatomic, retain) NSString *title; 21 | @property (nonatomic, assign) id delegate; 22 | @end 23 | 24 | @protocol CalloutAnnotationViewDelegate 25 | @required 26 | - (void)calloutButtonClicked:(NSString *)title; 27 | @end 28 | -------------------------------------------------------------------------------- /CustomCalloutSample/CustomCalloutSample-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | ${PRODUCT_NAME} 9 | CFBundleExecutable 10 | ${EXECUTABLE_NAME} 11 | CFBundleIconFile 12 | 13 | CFBundleIdentifier 14 | com.aguuu.${PRODUCT_NAME:rfc1034identifier} 15 | CFBundleInfoDictionaryVersion 16 | 6.0 17 | CFBundleName 18 | ${PRODUCT_NAME} 19 | CFBundlePackageType 20 | APPL 21 | CFBundleShortVersionString 22 | 1.0 23 | CFBundleSignature 24 | ???? 25 | CFBundleVersion 26 | 1.0 27 | LSRequiresIPhoneOS 28 | 29 | NSMainNibFile 30 | MainWindow 31 | UISupportedInterfaceOrientations 32 | 33 | UIInterfaceOrientationPortrait 34 | UIInterfaceOrientationLandscapeLeft 35 | UIInterfaceOrientationLandscapeRight 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /CustomCalloutSample/CalloutAnnotationView.m: -------------------------------------------------------------------------------- 1 | // 2 | // CalloutAnnotationView.m 3 | // CustomCalloutSample 4 | // 5 | // Created by tochi on 11/05/17. 6 | // Copyright 2011 aguuu,Inc. All rights reserved. 7 | // 8 | 9 | #import "CalloutAnnotationView.h" 10 | #import "CalloutAnnotation.h" 11 | 12 | @implementation CalloutAnnotationView 13 | @synthesize title=title_; 14 | @synthesize delegate=delegate_; 15 | 16 | - (id)initWithAnnotation:(id)annotation 17 | reuseIdentifier:(NSString *)reuseIdentifier 18 | { 19 | self = [super initWithAnnotation:annotation reuseIdentifier:reuseIdentifier]; 20 | 21 | if (self) { 22 | self.frame = CGRectMake(0.0f, 0.0f, 100.0f, 200.0f); 23 | // self.backgroundColor = [UIColor colorWithRed:0.0f green:0.0f blue:0.0f alpha:0.3f]; 24 | self.backgroundColor = [UIColor clearColor]; 25 | 26 | titleLabel_ = [[UILabel alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 100.0f, 50.0f)]; 27 | titleLabel_.textColor = [UIColor whiteColor]; 28 | titleLabel_.textAlignment = UITextAlignmentCenter; 29 | titleLabel_.backgroundColor = [UIColor colorWithRed:0.0f green:0.0f blue:0.0f alpha:0.5f]; 30 | [self addSubview:titleLabel_]; 31 | 32 | button_ = [[UIButton buttonWithType:UIButtonTypeInfoLight] retain]; 33 | [button_ addTarget:self action:@selector(calloutButtonClicked) forControlEvents:UIControlEventTouchDown]; 34 | [self addSubview:button_]; 35 | } 36 | 37 | return self; 38 | } 39 | 40 | - (void)dealloc 41 | { 42 | [title_ release], title_ = nil; 43 | [titleLabel_ release], titleLabel_ = nil; 44 | [button_ release], button_ = nil; 45 | 46 | [super dealloc]; 47 | } 48 | 49 | -(void)drawRect:(CGRect)rect 50 | { 51 | [super drawRect:rect]; 52 | titleLabel_.text = self.title; 53 | } 54 | 55 | #pragma mark - Button clicked 56 | - (void)calloutButtonClicked 57 | { 58 | CalloutAnnotation *annotation = self.annotation; 59 | [delegate_ calloutButtonClicked:(NSString *)annotation.title]; 60 | } 61 | @end 62 | -------------------------------------------------------------------------------- /CustomCalloutSample/CustomCalloutSampleAppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // CustomCalloutSampleAppDelegate.m 3 | // CustomCalloutSample 4 | // 5 | // Created by tochi on 11/05/17. 6 | // Copyright 2011 aguuu,Inc. All rights reserved. 7 | // 8 | 9 | #import "CustomCalloutSampleAppDelegate.h" 10 | 11 | #import "CustomCalloutSampleViewController.h" 12 | 13 | @implementation CustomCalloutSampleAppDelegate 14 | 15 | 16 | @synthesize window=_window; 17 | 18 | @synthesize viewController=_viewController; 19 | 20 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 21 | { 22 | // Override point for customization after application launch. 23 | 24 | self.window.rootViewController = self.viewController; 25 | [self.window makeKeyAndVisible]; 26 | return YES; 27 | } 28 | 29 | - (void)applicationWillResignActive:(UIApplication *)application 30 | { 31 | /* 32 | Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 33 | Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. 34 | */ 35 | } 36 | 37 | - (void)applicationDidEnterBackground:(UIApplication *)application 38 | { 39 | /* 40 | Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 41 | If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 42 | */ 43 | } 44 | 45 | - (void)applicationWillEnterForeground:(UIApplication *)application 46 | { 47 | /* 48 | Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. 49 | */ 50 | } 51 | 52 | - (void)applicationDidBecomeActive:(UIApplication *)application 53 | { 54 | /* 55 | Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 56 | */ 57 | } 58 | 59 | - (void)applicationWillTerminate:(UIApplication *)application 60 | { 61 | /* 62 | Called when the application is about to terminate. 63 | Save data if appropriate. 64 | See also applicationDidEnterBackground:. 65 | */ 66 | } 67 | 68 | - (void)dealloc 69 | { 70 | [_window release]; 71 | [_viewController release]; 72 | [super dealloc]; 73 | } 74 | 75 | @end 76 | -------------------------------------------------------------------------------- /CustomCalloutSample.xcodeproj/xcuserdata/tochi.xcuserdatad/xcschemes/CustomCalloutSample.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | 14 | 20 | 21 | 22 | 23 | 24 | 29 | 30 | 31 | 32 | 40 | 41 | 47 | 48 | 49 | 50 | 51 | 52 | 59 | 60 | 66 | 67 | 68 | 69 | 71 | 72 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /CustomCalloutSample/CustomCalloutSampleViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // CustomCalloutSampleViewController.m 3 | // CustomCalloutSample 4 | // 5 | // Created by tochi on 11/05/17. 6 | // Copyright 2011 aguuu,Inc. All rights reserved. 7 | // 8 | 9 | #import "CustomCalloutSampleViewController.h" 10 | 11 | 12 | @interface CustomCalloutSampleViewController (Private) 13 | - (void)releaseOutlets; 14 | @end 15 | 16 | @implementation CustomCalloutSampleViewController 17 | 18 | - (void)dealloc 19 | { 20 | [super dealloc]; 21 | 22 | [self releaseOutlets]; 23 | } 24 | 25 | - (void)didReceiveMemoryWarning 26 | { 27 | [super didReceiveMemoryWarning]; 28 | } 29 | 30 | - (void)releaseOutlets 31 | { 32 | [mapView_ release], mapView_ = nil; 33 | } 34 | 35 | #pragma mark - View lifecycle 36 | - (void)viewDidLoad 37 | { 38 | [super viewDidLoad]; 39 | 40 | // MapView. 41 | mapView_ = [[MKMapView alloc] init]; 42 | mapView_.delegate = self; 43 | mapView_.frame = self.view.bounds; 44 | [self.view addSubview:mapView_]; 45 | 46 | // Pin annotation. 47 | NSMutableArray *locationArray = [NSMutableArray arrayWithCapacity:0]; 48 | [locationArray addObject:[NSDictionary dictionaryWithObjectsAndKeys: 49 | @"Pin-1", @"title", 50 | [NSNumber numberWithFloat:34.655146f], @"lat", 51 | [NSNumber numberWithFloat:133.919502f], @"lon", nil]]; 52 | [locationArray addObject:[NSDictionary dictionaryWithObjectsAndKeys: 53 | @"Pin-2", @"title", 54 | [NSNumber numberWithFloat:34.755146f], @"lat", 55 | [NSNumber numberWithFloat:133.819502f], @"lon", nil]]; 56 | 57 | // Add annotations on the MapView. 58 | PinAnnotation *pinAnnotation; 59 | CLLocationCoordinate2D coordinate; 60 | for (NSDictionary *location in locationArray) { 61 | coordinate.latitude = [[location objectForKey:@"lat"] floatValue]; 62 | coordinate.longitude = [[location objectForKey:@"lon"] floatValue]; 63 | 64 | pinAnnotation = [[PinAnnotation alloc] init]; 65 | pinAnnotation.title = (NSString *)[location objectForKey:@"title"]; 66 | pinAnnotation.coordinate = coordinate; 67 | [mapView_ addAnnotation:pinAnnotation]; 68 | [pinAnnotation release]; 69 | } 70 | 71 | mapView_.region = MKCoordinateRegionMakeWithDistance(coordinate, 100000, 100000); 72 | } 73 | 74 | - (void)viewDidUnload 75 | { 76 | [super viewDidUnload]; 77 | 78 | [self releaseOutlets]; 79 | } 80 | 81 | - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 82 | { 83 | return (interfaceOrientation == UIInterfaceOrientationPortrait); 84 | } 85 | 86 | #pragma mark - MapView delegate. 87 | - (MKAnnotationView *)mapView:(MKMapView *)mapView 88 | viewForAnnotation:(id)annotation 89 | { 90 | MKAnnotationView *annotationView; 91 | NSString *identifier; 92 | 93 | if ([annotation isKindOfClass:[PinAnnotation class]]) { 94 | // Pin annotation. 95 | identifier = @"Pin"; 96 | annotationView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:identifier]; 97 | 98 | if (annotationView == nil) { 99 | annotationView = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:identifier] autorelease]; 100 | } 101 | } else if ([annotation isKindOfClass:[CalloutAnnotation class]]) { 102 | // Callout annotation. 103 | identifier = @"Callout"; 104 | annotationView = (CalloutAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:identifier]; 105 | 106 | if (annotationView == nil) { 107 | annotationView = [[[CalloutAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:identifier] autorelease]; 108 | } 109 | 110 | CalloutAnnotation *calloutAnnotation = (CalloutAnnotation *)annotation; 111 | 112 | ((CalloutAnnotationView *)annotationView).title = calloutAnnotation.title; 113 | ((CalloutAnnotationView *)annotationView).delegate = self; 114 | [annotationView setNeedsDisplay]; 115 | 116 | // Move the display position of MapView. 117 | [UIView animateWithDuration:0.5f 118 | animations:^(void) { 119 | mapView.centerCoordinate = calloutAnnotation.coordinate; 120 | }]; 121 | } 122 | 123 | annotationView.annotation = annotation; 124 | 125 | return annotationView; 126 | } 127 | 128 | - (void)mapView:(MKMapView *)mapView 129 | didSelectAnnotationView:(MKAnnotationView *)view 130 | { 131 | if ([view.annotation isKindOfClass:[PinAnnotation class]]) { 132 | // Selected the pin annotation. 133 | CalloutAnnotation *calloutAnnotation = [[[CalloutAnnotation alloc] init] autorelease]; 134 | 135 | PinAnnotation *pinAnnotation = ((PinAnnotation *)view.annotation); 136 | calloutAnnotation.title = pinAnnotation.title; 137 | calloutAnnotation.coordinate = pinAnnotation.coordinate; 138 | pinAnnotation.calloutAnnotation = calloutAnnotation; 139 | 140 | [mapView addAnnotation:calloutAnnotation]; 141 | } 142 | } 143 | 144 | - (void)mapView:(MKMapView *)mapView 145 | didDeselectAnnotationView:(MKAnnotationView *)view 146 | { 147 | if ([view.annotation isKindOfClass:[PinAnnotation class]]) { 148 | // Deselected the pin annotation. 149 | PinAnnotation *pinAnnotation = ((PinAnnotation *)view.annotation); 150 | 151 | [mapView removeAnnotation:pinAnnotation.calloutAnnotation]; 152 | 153 | pinAnnotation.calloutAnnotation = nil; 154 | } 155 | } 156 | 157 | #pragma mark - CalloutAnnotationViewDelegate 158 | - (void)calloutButtonClicked:(NSString *)title 159 | { 160 | NSLog(@"%@", title); 161 | } 162 | @end 163 | -------------------------------------------------------------------------------- /CustomCalloutSample/en.lproj/CustomCalloutSampleViewController.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 800 5 | 10C540 6 | 759 7 | 1038.25 8 | 458.00 9 | 10 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 11 | 77 12 | 13 | 14 | YES 15 | 16 | 17 | 18 | YES 19 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 20 | 21 | 22 | YES 23 | 24 | YES 25 | 26 | 27 | YES 28 | 29 | 30 | 31 | YES 32 | 33 | IBFilesOwner 34 | IBCocoaTouchFramework 35 | 36 | 37 | IBFirstResponder 38 | IBCocoaTouchFramework 39 | 40 | 41 | 42 | 274 43 | {320, 460} 44 | 45 | 46 | 3 47 | MC43NQA 48 | 49 | 2 50 | 51 | 52 | NO 53 | 54 | IBCocoaTouchFramework 55 | 56 | 57 | 58 | 59 | YES 60 | 61 | 62 | view 63 | 64 | 65 | 66 | 7 67 | 68 | 69 | 70 | 71 | YES 72 | 73 | 0 74 | 75 | 76 | 77 | 78 | 79 | -1 80 | 81 | 82 | File's Owner 83 | 84 | 85 | -2 86 | 87 | 88 | 89 | 90 | 6 91 | 92 | 93 | 94 | 95 | 96 | 97 | YES 98 | 99 | YES 100 | -1.CustomClassName 101 | -2.CustomClassName 102 | 6.IBEditorWindowLastContentRect 103 | 6.IBPluginDependency 104 | 105 | 106 | YES 107 | CustomCalloutSampleViewController 108 | UIResponder 109 | {{239, 654}, {320, 480}} 110 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 111 | 112 | 113 | 114 | YES 115 | 116 | 117 | YES 118 | 119 | 120 | 121 | 122 | YES 123 | 124 | 125 | YES 126 | 127 | 128 | 129 | 7 130 | 131 | 132 | 133 | YES 134 | 135 | CustomCalloutSampleViewController 136 | UIViewController 137 | 138 | IBProjectSource 139 | CustomCalloutSampleViewController.h 140 | 141 | 142 | 143 | 144 | 0 145 | IBCocoaTouchFramework 146 | 147 | com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 148 | 149 | 150 | YES 151 | CustomCalloutSample.xcodeproj 152 | 3 153 | 77 154 | 155 | 156 | 157 | -------------------------------------------------------------------------------- /CustomCalloutSample.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | D90350521381F76B002878D9 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D90350511381F76B002878D9 /* UIKit.framework */; }; 11 | D90350541381F76B002878D9 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D90350531381F76B002878D9 /* Foundation.framework */; }; 12 | D90350561381F76B002878D9 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D90350551381F76B002878D9 /* CoreGraphics.framework */; }; 13 | D903505C1381F76B002878D9 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = D903505A1381F76B002878D9 /* InfoPlist.strings */; }; 14 | D903505F1381F76B002878D9 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = D903505E1381F76B002878D9 /* main.m */; }; 15 | D90350621381F76B002878D9 /* CustomCalloutSampleAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = D90350611381F76B002878D9 /* CustomCalloutSampleAppDelegate.m */; }; 16 | D90350651381F76B002878D9 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = D90350631381F76B002878D9 /* MainWindow.xib */; }; 17 | D90350681381F76B002878D9 /* CustomCalloutSampleViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D90350671381F76B002878D9 /* CustomCalloutSampleViewController.m */; }; 18 | D903506B1381F76B002878D9 /* CustomCalloutSampleViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D90350691381F76B002878D9 /* CustomCalloutSampleViewController.xib */; }; 19 | D90350721381F7B0002878D9 /* MapKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D90350711381F7B0002878D9 /* MapKit.framework */; }; 20 | D90350751381FA10002878D9 /* PinAnnotation.m in Sources */ = {isa = PBXBuildFile; fileRef = D90350741381FA10002878D9 /* PinAnnotation.m */; }; 21 | D903507813820515002878D9 /* CalloutAnnotation.m in Sources */ = {isa = PBXBuildFile; fileRef = D903507713820515002878D9 /* CalloutAnnotation.m */; }; 22 | D903507B1382061D002878D9 /* CalloutAnnotationView.m in Sources */ = {isa = PBXBuildFile; fileRef = D903507A1382061D002878D9 /* CalloutAnnotationView.m */; }; 23 | /* End PBXBuildFile section */ 24 | 25 | /* Begin PBXFileReference section */ 26 | D903504D1381F76B002878D9 /* CustomCalloutSample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = CustomCalloutSample.app; sourceTree = BUILT_PRODUCTS_DIR; }; 27 | D90350511381F76B002878D9 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 28 | D90350531381F76B002878D9 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 29 | D90350551381F76B002878D9 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 30 | D90350591381F76B002878D9 /* CustomCalloutSample-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "CustomCalloutSample-Info.plist"; sourceTree = ""; }; 31 | D903505B1381F76B002878D9 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; 32 | D903505D1381F76B002878D9 /* CustomCalloutSample-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "CustomCalloutSample-Prefix.pch"; sourceTree = ""; }; 33 | D903505E1381F76B002878D9 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 34 | D90350601381F76B002878D9 /* CustomCalloutSampleAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CustomCalloutSampleAppDelegate.h; sourceTree = ""; }; 35 | D90350611381F76B002878D9 /* CustomCalloutSampleAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CustomCalloutSampleAppDelegate.m; sourceTree = ""; }; 36 | D90350641381F76B002878D9 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MainWindow.xib; sourceTree = ""; }; 37 | D90350661381F76B002878D9 /* CustomCalloutSampleViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CustomCalloutSampleViewController.h; sourceTree = ""; }; 38 | D90350671381F76B002878D9 /* CustomCalloutSampleViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CustomCalloutSampleViewController.m; sourceTree = ""; }; 39 | D903506A1381F76B002878D9 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/CustomCalloutSampleViewController.xib; sourceTree = ""; }; 40 | D90350711381F7B0002878D9 /* MapKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MapKit.framework; path = System/Library/Frameworks/MapKit.framework; sourceTree = SDKROOT; }; 41 | D90350731381FA10002878D9 /* PinAnnotation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PinAnnotation.h; sourceTree = ""; }; 42 | D90350741381FA10002878D9 /* PinAnnotation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PinAnnotation.m; sourceTree = ""; }; 43 | D903507613820515002878D9 /* CalloutAnnotation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CalloutAnnotation.h; sourceTree = ""; }; 44 | D903507713820515002878D9 /* CalloutAnnotation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CalloutAnnotation.m; sourceTree = ""; }; 45 | D90350791382061D002878D9 /* CalloutAnnotationView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CalloutAnnotationView.h; sourceTree = ""; }; 46 | D903507A1382061D002878D9 /* CalloutAnnotationView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CalloutAnnotationView.m; sourceTree = ""; }; 47 | /* End PBXFileReference section */ 48 | 49 | /* Begin PBXFrameworksBuildPhase section */ 50 | D903504A1381F76B002878D9 /* Frameworks */ = { 51 | isa = PBXFrameworksBuildPhase; 52 | buildActionMask = 2147483647; 53 | files = ( 54 | D90350721381F7B0002878D9 /* MapKit.framework in Frameworks */, 55 | D90350521381F76B002878D9 /* UIKit.framework in Frameworks */, 56 | D90350541381F76B002878D9 /* Foundation.framework in Frameworks */, 57 | D90350561381F76B002878D9 /* CoreGraphics.framework in Frameworks */, 58 | ); 59 | runOnlyForDeploymentPostprocessing = 0; 60 | }; 61 | /* End PBXFrameworksBuildPhase section */ 62 | 63 | /* Begin PBXGroup section */ 64 | D90350421381F76B002878D9 = { 65 | isa = PBXGroup; 66 | children = ( 67 | D90350571381F76B002878D9 /* CustomCalloutSample */, 68 | D90350501381F76B002878D9 /* Frameworks */, 69 | D903504E1381F76B002878D9 /* Products */, 70 | ); 71 | sourceTree = ""; 72 | }; 73 | D903504E1381F76B002878D9 /* Products */ = { 74 | isa = PBXGroup; 75 | children = ( 76 | D903504D1381F76B002878D9 /* CustomCalloutSample.app */, 77 | ); 78 | name = Products; 79 | sourceTree = ""; 80 | }; 81 | D90350501381F76B002878D9 /* Frameworks */ = { 82 | isa = PBXGroup; 83 | children = ( 84 | D90350711381F7B0002878D9 /* MapKit.framework */, 85 | D90350511381F76B002878D9 /* UIKit.framework */, 86 | D90350531381F76B002878D9 /* Foundation.framework */, 87 | D90350551381F76B002878D9 /* CoreGraphics.framework */, 88 | ); 89 | name = Frameworks; 90 | sourceTree = ""; 91 | }; 92 | D90350571381F76B002878D9 /* CustomCalloutSample */ = { 93 | isa = PBXGroup; 94 | children = ( 95 | D90350601381F76B002878D9 /* CustomCalloutSampleAppDelegate.h */, 96 | D90350611381F76B002878D9 /* CustomCalloutSampleAppDelegate.m */, 97 | D90350631381F76B002878D9 /* MainWindow.xib */, 98 | D90350661381F76B002878D9 /* CustomCalloutSampleViewController.h */, 99 | D90350671381F76B002878D9 /* CustomCalloutSampleViewController.m */, 100 | D90350691381F76B002878D9 /* CustomCalloutSampleViewController.xib */, 101 | D90350731381FA10002878D9 /* PinAnnotation.h */, 102 | D90350741381FA10002878D9 /* PinAnnotation.m */, 103 | D903507613820515002878D9 /* CalloutAnnotation.h */, 104 | D903507713820515002878D9 /* CalloutAnnotation.m */, 105 | D90350791382061D002878D9 /* CalloutAnnotationView.h */, 106 | D903507A1382061D002878D9 /* CalloutAnnotationView.m */, 107 | D90350581381F76B002878D9 /* Supporting Files */, 108 | ); 109 | path = CustomCalloutSample; 110 | sourceTree = ""; 111 | }; 112 | D90350581381F76B002878D9 /* Supporting Files */ = { 113 | isa = PBXGroup; 114 | children = ( 115 | D90350591381F76B002878D9 /* CustomCalloutSample-Info.plist */, 116 | D903505A1381F76B002878D9 /* InfoPlist.strings */, 117 | D903505D1381F76B002878D9 /* CustomCalloutSample-Prefix.pch */, 118 | D903505E1381F76B002878D9 /* main.m */, 119 | ); 120 | name = "Supporting Files"; 121 | sourceTree = ""; 122 | }; 123 | /* End PBXGroup section */ 124 | 125 | /* Begin PBXNativeTarget section */ 126 | D903504C1381F76B002878D9 /* CustomCalloutSample */ = { 127 | isa = PBXNativeTarget; 128 | buildConfigurationList = D903506E1381F76B002878D9 /* Build configuration list for PBXNativeTarget "CustomCalloutSample" */; 129 | buildPhases = ( 130 | D90350491381F76B002878D9 /* Sources */, 131 | D903504A1381F76B002878D9 /* Frameworks */, 132 | D903504B1381F76B002878D9 /* Resources */, 133 | ); 134 | buildRules = ( 135 | ); 136 | dependencies = ( 137 | ); 138 | name = CustomCalloutSample; 139 | productName = CustomCalloutSample; 140 | productReference = D903504D1381F76B002878D9 /* CustomCalloutSample.app */; 141 | productType = "com.apple.product-type.application"; 142 | }; 143 | /* End PBXNativeTarget section */ 144 | 145 | /* Begin PBXProject section */ 146 | D90350441381F76B002878D9 /* Project object */ = { 147 | isa = PBXProject; 148 | attributes = { 149 | ORGANIZATIONNAME = "aguuu,Inc."; 150 | }; 151 | buildConfigurationList = D90350471381F76B002878D9 /* Build configuration list for PBXProject "CustomCalloutSample" */; 152 | compatibilityVersion = "Xcode 3.2"; 153 | developmentRegion = English; 154 | hasScannedForEncodings = 0; 155 | knownRegions = ( 156 | en, 157 | ); 158 | mainGroup = D90350421381F76B002878D9; 159 | productRefGroup = D903504E1381F76B002878D9 /* Products */; 160 | projectDirPath = ""; 161 | projectRoot = ""; 162 | targets = ( 163 | D903504C1381F76B002878D9 /* CustomCalloutSample */, 164 | ); 165 | }; 166 | /* End PBXProject section */ 167 | 168 | /* Begin PBXResourcesBuildPhase section */ 169 | D903504B1381F76B002878D9 /* Resources */ = { 170 | isa = PBXResourcesBuildPhase; 171 | buildActionMask = 2147483647; 172 | files = ( 173 | D903505C1381F76B002878D9 /* InfoPlist.strings in Resources */, 174 | D90350651381F76B002878D9 /* MainWindow.xib in Resources */, 175 | D903506B1381F76B002878D9 /* CustomCalloutSampleViewController.xib in Resources */, 176 | ); 177 | runOnlyForDeploymentPostprocessing = 0; 178 | }; 179 | /* End PBXResourcesBuildPhase section */ 180 | 181 | /* Begin PBXSourcesBuildPhase section */ 182 | D90350491381F76B002878D9 /* Sources */ = { 183 | isa = PBXSourcesBuildPhase; 184 | buildActionMask = 2147483647; 185 | files = ( 186 | D903505F1381F76B002878D9 /* main.m in Sources */, 187 | D90350621381F76B002878D9 /* CustomCalloutSampleAppDelegate.m in Sources */, 188 | D90350681381F76B002878D9 /* CustomCalloutSampleViewController.m in Sources */, 189 | D90350751381FA10002878D9 /* PinAnnotation.m in Sources */, 190 | D903507813820515002878D9 /* CalloutAnnotation.m in Sources */, 191 | D903507B1382061D002878D9 /* CalloutAnnotationView.m in Sources */, 192 | ); 193 | runOnlyForDeploymentPostprocessing = 0; 194 | }; 195 | /* End PBXSourcesBuildPhase section */ 196 | 197 | /* Begin PBXVariantGroup section */ 198 | D903505A1381F76B002878D9 /* InfoPlist.strings */ = { 199 | isa = PBXVariantGroup; 200 | children = ( 201 | D903505B1381F76B002878D9 /* en */, 202 | ); 203 | name = InfoPlist.strings; 204 | sourceTree = ""; 205 | }; 206 | D90350631381F76B002878D9 /* MainWindow.xib */ = { 207 | isa = PBXVariantGroup; 208 | children = ( 209 | D90350641381F76B002878D9 /* en */, 210 | ); 211 | name = MainWindow.xib; 212 | sourceTree = ""; 213 | }; 214 | D90350691381F76B002878D9 /* CustomCalloutSampleViewController.xib */ = { 215 | isa = PBXVariantGroup; 216 | children = ( 217 | D903506A1381F76B002878D9 /* en */, 218 | ); 219 | name = CustomCalloutSampleViewController.xib; 220 | sourceTree = ""; 221 | }; 222 | /* End PBXVariantGroup section */ 223 | 224 | /* Begin XCBuildConfiguration section */ 225 | D903506C1381F76B002878D9 /* Debug */ = { 226 | isa = XCBuildConfiguration; 227 | buildSettings = { 228 | ARCHS = "$(ARCHS_STANDARD_32_BIT)"; 229 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 230 | GCC_C_LANGUAGE_STANDARD = gnu99; 231 | GCC_OPTIMIZATION_LEVEL = 0; 232 | GCC_PREPROCESSOR_DEFINITIONS = DEBUG; 233 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 234 | GCC_VERSION = com.apple.compilers.llvmgcc42; 235 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 236 | GCC_WARN_UNUSED_VARIABLE = YES; 237 | IPHONEOS_DEPLOYMENT_TARGET = 4.3; 238 | SDKROOT = iphoneos; 239 | }; 240 | name = Debug; 241 | }; 242 | D903506D1381F76B002878D9 /* Release */ = { 243 | isa = XCBuildConfiguration; 244 | buildSettings = { 245 | ARCHS = "$(ARCHS_STANDARD_32_BIT)"; 246 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 247 | GCC_C_LANGUAGE_STANDARD = gnu99; 248 | GCC_VERSION = com.apple.compilers.llvmgcc42; 249 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 250 | GCC_WARN_UNUSED_VARIABLE = YES; 251 | IPHONEOS_DEPLOYMENT_TARGET = 4.3; 252 | OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; 253 | SDKROOT = iphoneos; 254 | }; 255 | name = Release; 256 | }; 257 | D903506F1381F76B002878D9 /* Debug */ = { 258 | isa = XCBuildConfiguration; 259 | buildSettings = { 260 | ALWAYS_SEARCH_USER_PATHS = NO; 261 | COPY_PHASE_STRIP = NO; 262 | GCC_DYNAMIC_NO_PIC = NO; 263 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 264 | GCC_PREFIX_HEADER = "CustomCalloutSample/CustomCalloutSample-Prefix.pch"; 265 | INFOPLIST_FILE = "CustomCalloutSample/CustomCalloutSample-Info.plist"; 266 | PRODUCT_NAME = "$(TARGET_NAME)"; 267 | WRAPPER_EXTENSION = app; 268 | }; 269 | name = Debug; 270 | }; 271 | D90350701381F76B002878D9 /* Release */ = { 272 | isa = XCBuildConfiguration; 273 | buildSettings = { 274 | ALWAYS_SEARCH_USER_PATHS = NO; 275 | COPY_PHASE_STRIP = YES; 276 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 277 | GCC_PREFIX_HEADER = "CustomCalloutSample/CustomCalloutSample-Prefix.pch"; 278 | INFOPLIST_FILE = "CustomCalloutSample/CustomCalloutSample-Info.plist"; 279 | PRODUCT_NAME = "$(TARGET_NAME)"; 280 | VALIDATE_PRODUCT = YES; 281 | WRAPPER_EXTENSION = app; 282 | }; 283 | name = Release; 284 | }; 285 | /* End XCBuildConfiguration section */ 286 | 287 | /* Begin XCConfigurationList section */ 288 | D90350471381F76B002878D9 /* Build configuration list for PBXProject "CustomCalloutSample" */ = { 289 | isa = XCConfigurationList; 290 | buildConfigurations = ( 291 | D903506C1381F76B002878D9 /* Debug */, 292 | D903506D1381F76B002878D9 /* Release */, 293 | ); 294 | defaultConfigurationIsVisible = 0; 295 | defaultConfigurationName = Release; 296 | }; 297 | D903506E1381F76B002878D9 /* Build configuration list for PBXNativeTarget "CustomCalloutSample" */ = { 298 | isa = XCConfigurationList; 299 | buildConfigurations = ( 300 | D903506F1381F76B002878D9 /* Debug */, 301 | D90350701381F76B002878D9 /* Release */, 302 | ); 303 | defaultConfigurationIsVisible = 0; 304 | }; 305 | /* End XCConfigurationList section */ 306 | }; 307 | rootObject = D90350441381F76B002878D9 /* Project object */; 308 | } 309 | -------------------------------------------------------------------------------- /CustomCalloutSample/en.lproj/MainWindow.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 1024 5 | 10D571 6 | 786 7 | 1038.29 8 | 460.00 9 | 10 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 11 | 112 12 | 13 | 14 | YES 15 | 16 | 17 | 18 | YES 19 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 20 | 21 | 22 | YES 23 | 24 | YES 25 | 26 | 27 | YES 28 | 29 | 30 | 31 | YES 32 | 33 | IBFilesOwner 34 | IBCocoaTouchFramework 35 | 36 | 37 | IBFirstResponder 38 | IBCocoaTouchFramework 39 | 40 | 41 | IBCocoaTouchFramework 42 | 43 | 44 | CustomCalloutSampleViewController 45 | 46 | 47 | 1 48 | 49 | IBCocoaTouchFramework 50 | NO 51 | 52 | 53 | 54 | 292 55 | {320, 480} 56 | 57 | 1 58 | MSAxIDEAA 59 | 60 | NO 61 | NO 62 | 63 | IBCocoaTouchFramework 64 | YES 65 | 66 | 67 | 68 | 69 | YES 70 | 71 | 72 | delegate 73 | 74 | 75 | 76 | 4 77 | 78 | 79 | 80 | viewController 81 | 82 | 83 | 84 | 11 85 | 86 | 87 | 88 | window 89 | 90 | 91 | 92 | 14 93 | 94 | 95 | 96 | 97 | YES 98 | 99 | 0 100 | 101 | 102 | 103 | 104 | 105 | -1 106 | 107 | 108 | File's Owner 109 | 110 | 111 | 3 112 | 113 | 114 | CustomCalloutSample App Delegate 115 | 116 | 117 | -2 118 | 119 | 120 | 121 | 122 | 10 123 | 124 | 125 | 126 | 127 | 12 128 | 129 | 130 | 131 | 132 | 133 | 134 | YES 135 | 136 | YES 137 | -1.CustomClassName 138 | -2.CustomClassName 139 | 10.CustomClassName 140 | 10.IBEditorWindowLastContentRect 141 | 10.IBPluginDependency 142 | 12.IBEditorWindowLastContentRect 143 | 12.IBPluginDependency 144 | 3.CustomClassName 145 | 3.IBPluginDependency 146 | 147 | 148 | YES 149 | UIApplication 150 | UIResponder 151 | CustomCalloutSampleViewController 152 | {{234, 376}, {320, 480}} 153 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 154 | {{525, 346}, {320, 480}} 155 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 156 | CustomCalloutSampleAppDelegate 157 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 158 | 159 | 160 | 161 | YES 162 | 163 | 164 | YES 165 | 166 | 167 | 168 | 169 | YES 170 | 171 | 172 | YES 173 | 174 | 175 | 176 | 15 177 | 178 | 179 | 180 | YES 181 | 182 | UIWindow 183 | UIView 184 | 185 | IBUserSource 186 | 187 | 188 | 189 | 190 | CustomCalloutSampleAppDelegate 191 | NSObject 192 | 193 | YES 194 | 195 | YES 196 | viewController 197 | window 198 | 199 | 200 | YES 201 | CustomCalloutSampleViewController 202 | UIWindow 203 | 204 | 205 | 206 | YES 207 | 208 | YES 209 | viewController 210 | window 211 | 212 | 213 | YES 214 | 215 | viewController 216 | CustomCalloutSampleViewController 217 | 218 | 219 | window 220 | UIWindow 221 | 222 | 223 | 224 | 225 | IBProjectSource 226 | CustomCalloutSampleAppDelegate.h 227 | 228 | 229 | 230 | CustomCalloutSampleAppDelegate 231 | NSObject 232 | 233 | IBUserSource 234 | 235 | 236 | 237 | 238 | CustomCalloutSampleViewController 239 | UIViewController 240 | 241 | IBProjectSource 242 | CustomCalloutSampleViewController.h 243 | 244 | 245 | 246 | 247 | YES 248 | 249 | NSObject 250 | 251 | IBFrameworkSource 252 | Foundation.framework/Headers/NSError.h 253 | 254 | 255 | 256 | NSObject 257 | 258 | IBFrameworkSource 259 | Foundation.framework/Headers/NSFileManager.h 260 | 261 | 262 | 263 | NSObject 264 | 265 | IBFrameworkSource 266 | Foundation.framework/Headers/NSKeyValueCoding.h 267 | 268 | 269 | 270 | NSObject 271 | 272 | IBFrameworkSource 273 | Foundation.framework/Headers/NSKeyValueObserving.h 274 | 275 | 276 | 277 | NSObject 278 | 279 | IBFrameworkSource 280 | Foundation.framework/Headers/NSKeyedArchiver.h 281 | 282 | 283 | 284 | NSObject 285 | 286 | IBFrameworkSource 287 | Foundation.framework/Headers/NSObject.h 288 | 289 | 290 | 291 | NSObject 292 | 293 | IBFrameworkSource 294 | Foundation.framework/Headers/NSRunLoop.h 295 | 296 | 297 | 298 | NSObject 299 | 300 | IBFrameworkSource 301 | Foundation.framework/Headers/NSThread.h 302 | 303 | 304 | 305 | NSObject 306 | 307 | IBFrameworkSource 308 | Foundation.framework/Headers/NSURL.h 309 | 310 | 311 | 312 | NSObject 313 | 314 | IBFrameworkSource 315 | Foundation.framework/Headers/NSURLConnection.h 316 | 317 | 318 | 319 | NSObject 320 | 321 | IBFrameworkSource 322 | UIKit.framework/Headers/UIAccessibility.h 323 | 324 | 325 | 326 | NSObject 327 | 328 | IBFrameworkSource 329 | UIKit.framework/Headers/UINibLoading.h 330 | 331 | 332 | 333 | NSObject 334 | 335 | IBFrameworkSource 336 | UIKit.framework/Headers/UIResponder.h 337 | 338 | 339 | 340 | UIApplication 341 | UIResponder 342 | 343 | IBFrameworkSource 344 | UIKit.framework/Headers/UIApplication.h 345 | 346 | 347 | 348 | UIResponder 349 | NSObject 350 | 351 | 352 | 353 | UISearchBar 354 | UIView 355 | 356 | IBFrameworkSource 357 | UIKit.framework/Headers/UISearchBar.h 358 | 359 | 360 | 361 | UISearchDisplayController 362 | NSObject 363 | 364 | IBFrameworkSource 365 | UIKit.framework/Headers/UISearchDisplayController.h 366 | 367 | 368 | 369 | UIView 370 | 371 | IBFrameworkSource 372 | UIKit.framework/Headers/UITextField.h 373 | 374 | 375 | 376 | UIView 377 | UIResponder 378 | 379 | IBFrameworkSource 380 | UIKit.framework/Headers/UIView.h 381 | 382 | 383 | 384 | UIViewController 385 | 386 | IBFrameworkSource 387 | UIKit.framework/Headers/UINavigationController.h 388 | 389 | 390 | 391 | UIViewController 392 | 393 | IBFrameworkSource 394 | UIKit.framework/Headers/UIPopoverController.h 395 | 396 | 397 | 398 | UIViewController 399 | 400 | IBFrameworkSource 401 | UIKit.framework/Headers/UISplitViewController.h 402 | 403 | 404 | 405 | UIViewController 406 | 407 | IBFrameworkSource 408 | UIKit.framework/Headers/UITabBarController.h 409 | 410 | 411 | 412 | UIViewController 413 | UIResponder 414 | 415 | IBFrameworkSource 416 | UIKit.framework/Headers/UIViewController.h 417 | 418 | 419 | 420 | UIWindow 421 | UIView 422 | 423 | IBFrameworkSource 424 | UIKit.framework/Headers/UIWindow.h 425 | 426 | 427 | 428 | 429 | 0 430 | IBCocoaTouchFramework 431 | 432 | com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS 433 | 434 | 435 | 436 | com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 437 | 438 | 439 | YES 440 | CustomCalloutSample.xcodeproj 441 | 3 442 | 112 443 | 444 | 445 | --------------------------------------------------------------------------------