Objective C UIWebView - 加载本地内容

[WebView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"]isDirectory:NO]]];

Objective C 来自URL的UIImage

NSURL* url = [NSURL URLWithString:@"http://your.image.com"];
NSData* data = [[NSData alloc] initWithContentsOfURL:aURL];
imageView.image = [UIImage imageWithData:data];
[data release];

Objective C Carbon的虚拟密钥代码

/*
 *  Summary:
 *    Virtual keycodes
 *  
 *  Discussion:
 *    These constants are the virtual keycodes defined originally in
 *    Inside Mac Volume V, pg. V-191. They identify physical keys on a
 *    keyboard. Those constants with "ANSI" in the name are labeled
 *    according to the key position on an ANSI-standard US keyboard.
 *    For example, kVK_ANSI_A indicates the virtual keycode for the key
 *    with the letter 'A' in the US keyboard layout. Other keyboard
 *    layouts may have the 'A' key label on a different physical key;
 *    in this case, pressing 'A' will generate a different virtual
 *    keycode.
 */
enum {
  kVK_ANSI_A                    = 0x00,
  kVK_ANSI_S                    = 0x01,
  kVK_ANSI_D                    = 0x02,
  kVK_ANSI_F                    = 0x03,
  kVK_ANSI_H                    = 0x04,
  kVK_ANSI_G                    = 0x05,
  kVK_ANSI_Z                    = 0x06,
  kVK_ANSI_X                    = 0x07,
  kVK_ANSI_C                    = 0x08,
  kVK_ANSI_V                    = 0x09,
  kVK_ANSI_B                    = 0x0B,
  kVK_ANSI_Q                    = 0x0C,
  kVK_ANSI_W                    = 0x0D,
  kVK_ANSI_E                    = 0x0E,
  kVK_ANSI_R                    = 0x0F,
  kVK_ANSI_Y                    = 0x10,
  kVK_ANSI_T                    = 0x11,
  kVK_ANSI_1                    = 0x12,
  kVK_ANSI_2                    = 0x13,
  kVK_ANSI_3                    = 0x14,
  kVK_ANSI_4                    = 0x15,
  kVK_ANSI_6                    = 0x16,
  kVK_ANSI_5                    = 0x17,
  kVK_ANSI_Equal                = 0x18,
  kVK_ANSI_9                    = 0x19,
  kVK_ANSI_7                    = 0x1A,
  kVK_ANSI_Minus                = 0x1B,
  kVK_ANSI_8                    = 0x1C,
  kVK_ANSI_0                    = 0x1D,
  kVK_ANSI_RightBracket         = 0x1E,
  kVK_ANSI_O                    = 0x1F,
  kVK_ANSI_U                    = 0x20,
  kVK_ANSI_LeftBracket          = 0x21,
  kVK_ANSI_I                    = 0x22,
  kVK_ANSI_P                    = 0x23,
  kVK_ANSI_L                    = 0x25,
  kVK_ANSI_J                    = 0x26,
  kVK_ANSI_Quote                = 0x27,
  kVK_ANSI_K                    = 0x28,
  kVK_ANSI_Semicolon            = 0x29,
  kVK_ANSI_Backslash            = 0x2A,
  kVK_ANSI_Comma                = 0x2B,
  kVK_ANSI_Slash                = 0x2C,
  kVK_ANSI_N                    = 0x2D,
  kVK_ANSI_M                    = 0x2E,
  kVK_ANSI_Period               = 0x2F,
  kVK_ANSI_Grave                = 0x32,
  kVK_ANSI_KeypadDecimal        = 0x41,
  kVK_ANSI_KeypadMultiply       = 0x43,
  kVK_ANSI_KeypadPlus           = 0x45,
  kVK_ANSI_KeypadClear          = 0x47,
  kVK_ANSI_KeypadDivide         = 0x4B,
  kVK_ANSI_KeypadEnter          = 0x4C,
  kVK_ANSI_KeypadMinus          = 0x4E,
  kVK_ANSI_KeypadEquals         = 0x51,
  kVK_ANSI_Keypad0              = 0x52,
  kVK_ANSI_Keypad1              = 0x53,
  kVK_ANSI_Keypad2              = 0x54,
  kVK_ANSI_Keypad3              = 0x55,
  kVK_ANSI_Keypad4              = 0x56,
  kVK_ANSI_Keypad5              = 0x57,
  kVK_ANSI_Keypad6              = 0x58,
  kVK_ANSI_Keypad7              = 0x59,
  kVK_ANSI_Keypad8              = 0x5B,
  kVK_ANSI_Keypad9              = 0x5C
};

/* keycodes for keys that are independent of keyboard layout*/
enum {
  kVK_Return                    = 0x24,
  kVK_Tab                       = 0x30,
  kVK_Space                     = 0x31,
  kVK_Delete                    = 0x33,
  kVK_Escape                    = 0x35,
  kVK_Command                   = 0x37,
  kVK_Shift                     = 0x38,
  kVK_CapsLock                  = 0x39,
  kVK_Option                    = 0x3A,
  kVK_Control                   = 0x3B,
  kVK_RightShift                = 0x3C,
  kVK_RightOption               = 0x3D,
  kVK_RightControl              = 0x3E,
  kVK_Function                  = 0x3F,
  kVK_F17                       = 0x40,
  kVK_VolumeUp                  = 0x48,
  kVK_VolumeDown                = 0x49,
  kVK_Mute                      = 0x4A,
  kVK_F18                       = 0x4F,
  kVK_F19                       = 0x50,
  kVK_F20                       = 0x5A,
  kVK_F5                        = 0x60,
  kVK_F6                        = 0x61,
  kVK_F7                        = 0x62,
  kVK_F3                        = 0x63,
  kVK_F8                        = 0x64,
  kVK_F9                        = 0x65,
  kVK_F11                       = 0x67,
  kVK_F13                       = 0x69,
  kVK_F16                       = 0x6A,
  kVK_F14                       = 0x6B,
  kVK_F10                       = 0x6D,
  kVK_F12                       = 0x6F,
  kVK_F15                       = 0x71,
  kVK_Help                      = 0x72,
  kVK_Home                      = 0x73,
  kVK_PageUp                    = 0x74,
  kVK_ForwardDelete             = 0x75,
  kVK_F4                        = 0x76,
  kVK_End                       = 0x77,
  kVK_F2                        = 0x78,
  kVK_PageDown                  = 0x79,
  kVK_F1                        = 0x7A,
  kVK_LeftArrow                 = 0x7B,
  kVK_RightArrow                = 0x7C,
  kVK_DownArrow                 = 0x7D,
  kVK_UpArrow                   = 0x7E
};

/* ISO keyboards only*/
enum {
  kVK_ISO_Section               = 0x0A
};

/* JIS keyboards only*/
enum {
  kVK_JIS_Yen                   = 0x5D,
  kVK_JIS_Underscore            = 0x5E,
  kVK_JIS_KeypadComma           = 0x5F,
  kVK_JIS_Eisu                  = 0x66,
  kVK_JIS_Kana                  = 0x68
};

Objective C 在iPhone中获得定位

UIInterfaceOrientation currentOrient=[UIDevice currentDevice].orientation; 
if (currentOrient==UIInterfaceOrientationPortrait|| 
currentOrient==UIInterfaceOrientationPortraitUpsideDown) { 
                NSLog(@"portrait"); 
        } 
        else if(currentOrient==UIInterfaceOrientationLandscapeLeft|| 
currentOrient==UIInterfaceOrientationLandscapeRight) 
        { 
                NSLog(@"landscape"); 
        }

Objective C 具有日期日月的SQLite DBAccess

NSString	*dayNameString[] = {@"Sunday", @"Monday", @"Tuesday", @"Wednesday", @"Thursday", @"Friday", @"Saturday"};
NSString	*dayNameHalfString[] = {@"Sun", @"Mon", @"Tue", @"Wed", @"Thr", @"Frd", @"Sat"};
NSString	*monthName[] = {@"January", @"February", @"March", @"April", @"May", @"June", @"July", @"August", @"September", @"October", @"November", @"Decemeber"};

#define GETCOLUMNSTRING(_TO_, _FROM_)	NSString *_TO_; {const unsigned char *c = sqlite3_column_text(compiledStmt, _FROM_); _TO_ = c ? [NSString stringWithUTF8String:(char*)c] : @""; }
#define PUTCOLUMNSTRING(_TO_, _FROM_)	{NSString *str = [dObj valueForKey:_FROM_]; if (!str) str=@""; sqlite3_bind_text(compiledStmt, _TO_, [str UTF8String], -1, SQLITE_TRANSIENT);}


@implementation Database

+(Database *)sharedDatabase
{
    if (sharedDatabase == nil)
	{
		sharedDatabase = [[Database alloc] init];
	}
	return sharedDatabase;
}

- (id)init
{
	if (self = [super init])
	{
		NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
		NSString *basePath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil;
		NSString *dbPath=[basePath stringByAppendingPathComponent:[kDataBaseName stringByAppendingFormat:@".%@",kDataBaseExt]];
		NSFileManager *fm=[NSFileManager defaultManager];
		
		if(![fm fileExistsAtPath:dbPath]){
			[fm copyItemAtPath:[[NSBundle mainBundle] pathForResource:kDataBaseName ofType:kDataBaseExt] toPath:dbPath error:nil];
		}
		if (sqlite3_open([dbPath UTF8String], &database) != SQLITE_OK)
			NSLog(@"Error opening database!");
		
		sqlite3_stmt *compiledStmt;
		NSUInteger err = sqlite3_prepare_v2(database, "PRAGMA count_changes=OFF; PRAGMA journal_mode = OFF; PRAGMA synchronous=OFF", -1, &compiledStmt, NULL);
		if (!err)
		{
			err = sqlite3_step(compiledStmt);
			if (!err)
				sqlite3_finalize(compiledStmt);
		}
	}
 	return self;
}

-(NSArray*)getMarketsBySearchText:(NSString*)searchText{
	NSMutableArray *facultiesArray=[NSMutableArray array];
	{
//		NSString *tmpStr=[NSString stringWithFormat:@"select id, name, suburb FROM markets where verified is not null and name like '%@%' order by name asc",searchText];
		const char	*sqlStatement="select id, title, location_text_1 FROM pmd_listings where custom_15 is not null and title like ? order by name asc";
//		const char	*sqlStatement= [tmpStr UTF8String];
		sqlite3_stmt *compiledStmt;
		if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStmt, NULL) == SQLITE_OK) 
		{
			//sqlite3_bind_text(compiledStmt, 1, [[NSString stringWithFormat:@"%@%", searchText ] UTF8String], -1, SQLITE_TRANSIENT);
			sqlite3_bind_text(compiledStmt, 1, [[NSString stringWithFormat:@"%%%@%%", searchText ] UTF8String], -1, SQLITE_TRANSIENT);
			while(sqlite3_step(compiledStmt)==SQLITE_ROW)
			{
				NSUInteger mNo=(NSUInteger)sqlite3_column_int(compiledStmt, 0);
				GETCOLUMNSTRING(mName, 1)			//NSString *mName=[NSString stringWithFormat:@"%s",(char*)sqlite3_column_text(compiledStmt, 1)];
				GETCOLUMNSTRING(mSuburb, 2)			//NSString *mSuburb=[NSString stringWithFormat:@"%s",(char*)sqlite3_column_text(compiledStmt, 2)];
				[facultiesArray addObject:
				 [NSDictionary dictionaryWithObjectsAndKeys:
				  [NSString stringWithFormat:@"%i",mNo],@"marketid",
				  mName,@"marketname",
				  mSuburb,@"marketSuburb",nil
				  ]
				 ];
			}
		}
		sqlite3_finalize(compiledStmt);
	}
	return facultiesArray;
}


-(void)checkCategoryDetails:(NSArray*)dCategory
{
	NSLog(@"START*************** category  -%d items", dCategory.count );
	sqlite3_stmt *compiledStmt;
	sqlite3_prepare_v2(database, "BEGIN TRANSACTION", -1, &compiledStmt, NULL);
	sqlite3_step(compiledStmt);
	sqlite3_finalize(compiledStmt);	
	const char	*sqlStatement="REPLACE INTO pmd_categories(id,title,description_short,description,keywords,friendly_url,friendly_url_path,title_override,meta_description,meta_keywords,link,hidden,count,level,left_,right_,hits,ip,import_id) VALUES  (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
	if (sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStmt, NULL)== SQLITE_OK)
	{
		for (NSDictionary *dObj in dCategory)
		{
			NSUInteger	cid = [[dObj objectForKey:@"id"] intValue];
			if (cid)
			{
				NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
				
				sqlite3_bind_int(compiledStmt, 1, cid); 
				PUTCOLUMNSTRING(2, @"title")
				PUTCOLUMNSTRING(3, @"description_short")
				PUTCOLUMNSTRING(4, @"description")
				PUTCOLUMNSTRING(5, @"keywords")
				PUTCOLUMNSTRING(6, @"friendly_url")
				PUTCOLUMNSTRING(7, @"friendly_url_path")
				PUTCOLUMNSTRING(8, @"title_override")
				PUTCOLUMNSTRING(9, @"meta_description")
				PUTCOLUMNSTRING(10, @"meta_keywords")
				PUTCOLUMNSTRING(11, @"link")
				PUTCOLUMNSTRING(12, @"hidden")
				PUTCOLUMNSTRING(13, @"count")
				PUTCOLUMNSTRING(14, @"level")
				PUTCOLUMNSTRING(15, @"left_")
				PUTCOLUMNSTRING(16, @"right_")
				PUTCOLUMNSTRING(17, @"hits")
				PUTCOLUMNSTRING(18, @"ip")
				PUTCOLUMNSTRING(19, @"import_id")
				
				
				NSUInteger err = sqlite3_step(compiledStmt);
				if (err != SQLITE_DONE)
					NSLog(@"replace error %d %s",err, sqlite3_errmsg(database));
				sqlite3_reset(compiledStmt);
				[pool release];
			}
			
		}
		sqlite3_finalize(compiledStmt);		
	}
	sqlite3_prepare_v2(database, "END TRANSACTION", -1, &compiledStmt, NULL);
	sqlite3_step(compiledStmt);
	sqlite3_finalize(compiledStmt);	
	NSLog(@"END*************** category");
}

Objective C 具有可用性的MFMailComposeViewController检查iOS4 iPhone3.0 iPad3.2

-(void)sendMailByTitle:(BOOL)title andText:(NSString*)text byViewController:(UIViewController*)vCtr{
	self.strText=text;
	self.strTitle=title;
	vRef=vCtr;
	[self emailThisNote];
}

-(void)emailThisNote{
	Class mailClass = (NSClassFromString(@"MFMailComposeViewController"));
	if (mailClass != nil) {
		// We must always check whether the current device is configured for sending emails
		if ([mailClass canSendMail]){
			[self displayComposerSheet];
		}else {
			[self launchMailAppOnDevice];
		}
	}else {
		[self launchMailAppOnDevice];
	}	
}


#pragma mark -
#pragma mark Compose Mail

// Displays an email composition interface inside the application. Populates all the Mail fields. 
-(void)displayComposerSheet  {
	MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
	picker.mailComposeDelegate = self;
	
	// load value from DocDetail.plist
	NSDictionary *d=[NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"DocDetail" ofType:@"plist"]];
	
	[picker setSubject:[d valueForKey:@"DocTitle"]];
	
	
	NSString *strDocTitle=[d valueForKey:@"DocTitle"];
	NSString *strDtlTitle=(self.strTitle)?[d valueForKey:@"NoteText"]:[d valueForKey:@"HighlightText"];
	
	NSString *strDocLink=[d valueForKey:@"DocumentLink"];
	NSString *strImgDocuApp=[d valueForKey:@"Image_zzzApp"];
	NSString *strImgzzzCompany=[d valueForKey:@"Image_zzzCompany"];
	NSString *strWebLink=[d valueForKey:@"Web_Link"];
	NSString *strEmailLink=[d valueForKey:@"Email_link"];

	
	
	NSString *strToMail=[[NSString alloc] initWithFormat:@"<html><body><p><font family='Arial' size='3pt' color='darkblue'>%@</font></p><h3 style='color:brown'><u>%@</u></h3><p><font family='Arial' size='3pt' color='brown' style='background-color:yellow'>%@</font></p><p><font family='Arial' size='3pt' color='darkblue'>You can download this DocuApps™ document App for free by clicking this link:<a href='%@'>%@</a></font></p><p><font family='Arial' size='3pt' color='green' style='font-weight:bold'><img src='%@' height='88px' width='125px'><br>DocuApps™ is a product of The APP Company</font></p><img src='%@' width='175px' height='43px'><br><font family='Arial' style='font-weight:bold' color='blue'>For more information:</font><br><font family='Arial' size='3pt' color='brown'>Web :<a href='http://%@'>%@</a><br>Email: <a href='mailto:%@'>%@</a><br></font><font family='Century Gothic' size='1px' color='brown'>©2010 The APP Company. All Rights Reserved.</font><hr></body></html>",strDtlTitle,strDocTitle,self.strText,strDocLink,strDocLink,strImgzzzApp,zzzCompanympany,strWebLink,strWebLink,strEmailLink,strEmailLink];
	
	[picker setMessageBody:strToMail isHTML:YES];
	[strToMail release]; strToMail=nil;
	
	[vRef presentModalViewController:picker animated:YES];
    [picker release];
}


// Dismisses the email composition interface when users tap Cancel or Send. Proceeds to update the message field with the result of the operation.
- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error  {	
	[vRef dismissModalViewControllerAnimated:YES];
}

#pragma mark -
#pragma mark Workaround

// Launches the Mail application on the device.
-(void)launchMailAppOnDevice {
	UIAlertView *av=[[[UIAlertView alloc] initWithTitle:@"Message" message:@"Mail composer not available." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil] autorelease];
	[av show];
}

Objective C 带有presentModalViewController的UINavigationController

infoDataViewController *infoController = [[infoDataViewController alloc] initWithNibName:@"infoDataViewController" bundle:nil];
	infoController.modalTransitionStyle= UIModalTransitionStyleCrossDissolve;
	infoController.modalPresentationStyle=UIModalPresentationPageSheet;
	[self presentModalViewController:infoController animated:YES];
	
	UINavigationController *navController = [[[UINavigationController alloc] initWithRootViewController:infoController] autorelease];
	
	[self presentModalViewController:navController animated:YES];
	
	[infoController release];

Objective C UITabBarItemã?«ç”»ハ?

UIButton *customView = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 5, 5)];
[customView setBackgroundImage:[UIImage imageNamed:@"hoge.png"] forState:UIControlStateNormal];
[customView addTarget:self action:@selector(hogeAction) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem* buttonItem = [[UIBarButtonItem alloc] initWithCustomView:customView];
self.navigationItem.rightBarButtonItem = buttonItem;

Objective C NSDocumentDirectory在一个语句中获取DocumentsDir PathString

#define documentsDirectory_Statement NSString *documentsDirectory; \
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); \
documentsDirectory = [paths objectAtIndex:0];

Objective C 添加到OS X状态托盘

@interface Tray : NSObject <NSApplicationDelegate> {
	NSStatusItem *trayItem;
}
@end

@implementation Tray

- (IBAction)testAction:(id)sender;
{
	NSLog(@"Hello World");
}

- (IBAction)quitAction:(id)sender;
{
	[NSApp terminate:sender];
}

- (void)applicationDidFinishLaunching:(NSNotification *)note;
{
	NSZone *zone = [NSMenu menuZone];
	NSMenu *menu = [[[NSMenu allocWithZone:zone] init] autorelease];
	NSMenuItem *item;
	
	item = [menu addItemWithTitle:@"Testing" action:@selector(testAction:) keyEquivalent:@""];
	[item setTarget:self];
	
	item = [menu addItemWithTitle:@"Quit" action:@selector(quitAction:) keyEquivalent:@""];
	[item setTarget:self];
	
	trayItem = [[[NSStatusBar systemStatusBar] statusItemWithLength:NSSquareStatusItemLength] retain];
	[trayItem setMenu:menu];
	[trayItem setHighlightMode:YES];
	[trayItem setTitle:@"HERE"];
}

- (void)dealloc;
{
	[trayItem release];
	[super dealloc];
}

@end