我的原文在evernote,evernote链接的内容会不断更新
Settings 设置问题
1. setting面板的设置只有当用户去了设置面板后才会产生,所以程序要假设用户没有去过的时候设置默认值
2. 拿到[NSUserDefaultsstandardUserDefaults];取值之前要 [userDefault synchronize]
3. 假如从设置面板取回的是bool值,当你用代码
[userDefault boolForKey:@"mapautozoom"];
做判断的话, 假如得到了NO, 这时你无法判断 1.是用户设置了NO 2.还是用户从来没设置过所以是NO
这时要先用个
if([userDefault objectForKey:@"mapautozoom"]){
// 进来了说明用户设置过 然后再用 boolForKey
}
url encoding
NSString *urlString = [stringTobeEncoding stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
alertView
UIAlertView *alertView = [[UIAlertView alloc]
initWithTitle:@"Error" message:message delegate:nil
cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alertView show];
[alertView release];
[self dismissModalViewControllerAnimated:YES];
为UI添加处理事件方法
UIButton *rightButton = [UIButton buttonWithType:UIButtonTypeContactAdd];
[rightButton addTarget:self action:@selector(showDetails:) forControlEvents:UIControlEventTouchUpInside];
检测用户locale
//这里实际检测出的是region format设定 不是language设定
CFLocaleGetIdentifier(CFLocaleCopyCurrent()) //zh_CN
[[NSLocaleautoupdatingCurrentLocale] localeIdentifier //zh_CN]
添加国际化
1. 代码中使用字符串的地方 使用 NSLocalizedString(@"keyName",@"comment")
2. genstrings 扫描 .m 文件 ,生成 Localizable.strings
3. 在项目目录里生成en.lproj zh-Hans.lproj文件夹, 把Localizable.strings 放进去
4. 把Localizable.strings添加成项目的资源文件(copy bundle resources),确保打包的时候会被copy进去,
程序名国际化
en.lproj/InfoPlist.strings 添加
CFBundleName="EnglishName";
CFBundleDisplayName="EnglishName";
Settings.bundle 国际化
Settings.bundle/en.lproj/Root.strings
"version"="Version";
Root.plist的 title写 version, 显示的就是Version
剪贴板
得到剪贴板
UIPasteboard *pasteboard=[UIPasteboard generalPasteboard];
把一个字符串放置到剪贴板上: //用户此后在输入框 粘贴的就是这个字符串
pasteboard.string = @"Hello World";
从剪贴板获取字符串:
UIPasteboard *pasteboard=[UIPasteboard generalPasteboard];
NSString *myString=pasteboard.string;
UISegmentedControl
绑定 value changed 事件
long press事件
UILongPressGestureRecognizer *lpress = [[UILongPressGestureRecognizeralloc] initWithTarget:selfaction:@selector(longPress:)];
lpress.minimumPressDuration = 0.5;//按0.5秒响应longPress方法
lpress.allowableMovement = 10.0;
[mapaddGestureRecognizer:lpress];//m_mapView是MKMapView的实例
[lpress release];
- (void)longPress:(UIGestureRecognizer*)gestureRecognizer
{
if (gestureRecognizer.state == UIGestureRecognizerStateEnded){
// put your logic here which executed when the user release their finger
return;
}
modal 窗口
MainVC.m
- (IBAction) helpButtonClick:(id)sender{
HelpVC *help= [[[HelpVCalloc]init] autorelease];
help.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
help.delegate = self;
[selfpresentModalViewController:help animated:YES];
}
- (void)dismissModal:(HelpVC *)helpVC{
[selfdismissModalViewControllerAnimated:YES];
}
HelpVC.h
#import <UIKit/UIKit.h>
@classHelpVC;
@protocol HelpVCDelegate
- (void)dismissModal:(HelpVC *)helpVC;
@end
@interface HelpVC : UIViewController {
}
@property (nonatomic, assign) id<HelpVCDelegate> delegate;
- (IBAction) closeClick:(id)sender;
@end
HelpVC.m
- (IBAction) closeClick:(id)sender{
[delegatedismissModal:self];
}