2011년 4월 14일 목요일

[Iphone]https로 접근 시 SSL 무시하기

@interface NSURLRequest (IgnoreSSL)

+ (BOOL)allowsAnyHTTPSCertificateForHost:(NSString*)host;

@end

@implementation NSURLRequest (IgnoreSSL)

+ (BOOL)allowsAnyHTTPSCertificateForHost:(NSString*)host
{
return YES;
}

#end

2011년 3월 22일 화요일

[Iphone]테이블뷰 그룹일 경우 백그라운드 설정하기

UIView *backgroundView = [[UIView alloc] initWithFrame: self.view.frame];
backgroundView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"backgroundImg.png"]];
self.tableView.backgroundView = backgroundView;
[backgroundView release];

2011년 3월 17일 목요일

[Iphone]urlEncoding, urlDecoding 함수

+ (NSString *)urlEncodeValue:(NSString *)str
{
NSString *result = (NSString *) CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
(CFStringRef)str,
NULL,
CFSTR(":/?#[]@!$&’()*+,;="),
kCFStringEncodingUTF8);
return [result autorelease];
}

+ (NSString *)urlDecodeString:(NSString *)str
{
NSString *result = (NSString *)CFURLCreateStringByReplacingPercentEscapesUsingEncoding(kCFAllocatorDefault,
(CFStringRef)str,
CFSTR(""),
kCFStringEncodingUTF8);
return [result autorelease];
}

[Iphone]Array 파일로 저장

Settings.plist는 Resources 폴더에 미리 가지고 있어야 함.

- (void)saveRecents:(NSMutableArray *)recents {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"Setting.plist"];

[recents writeToFile:path atomically:YES];
}

- (NSMutableArray *)loadRecents {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"Setting.plist"];

return [NSMutableArray arrayWithContentsOfFile:path];
}

[Iphone]텍스트 필드의 길이 제한

UITextFieldDelegate 상속

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if(textField.text.length >= 20 && range.length == 0) {
return NO;
} else {
return YES;
}
}

2011년 3월 16일 수요일

[Iphone]단말에서 어플리케이션 실행 방법

1. App Developer 사이트에 단말기의 UDID 등록
2. Provisioning Profile에 단말기의 UDID 체크
3. Provisioning Profile을 다운로드 받아서 그 프로파일을 이용해서 빌드 후 배포

[Iphone]디바이스 모델 얻어오기 및 각종 정보 얻어오기

+ (NSString *)getDeviceModel {
size_t size;
sysctlbyname("hw.machine", NULL, &size, NULL, 0);
char *machine = malloc(size);
sysctlbyname("hw.machine", machine, &size, NULL, 0);
NSString *platform = [NSString stringWithCString:machine];

free(machine);
return platform;
}

+ (NSString *)getOsName {
return [[UIDevice currentDevice] systemName];
}

+ (NSString *)getOsVersion {
return [[UIDevice currentDevice] systemVersion];
}

2011년 2월 22일 화요일

[Iphone]텍스트와 숫자만 검사하는 코드

+ (bool)checkKeyCode:(NSString *)text {
NSRange range = [text rangeOfString:@"[0-9|a-z|A-Z|-|-|-| ]*"
options:NSRegularExpressionSearch];
if(range.length != [text length]) {
return NO;
}
return YES;
}

2011년 2월 11일 금요일

[Iphone]전화 및 SMS

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel:111-1111-1111"]];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"sms:111-1111-1111"]];

[Iphone]한글 UTF-8로 인코딩

NSString *escapedUrl = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

2011년 1월 27일 목요일

[Iphone]키보드 숨기기 팁

A 클래스가 UITextFieldDelegate를 상속받는다.
@interface A : UIViewController<UITextFieldDelegate> {
  UITextField *textEdit;
}

델리게이트를 가리키도록 한다.
- (void)viewDidLoad {
  textEdit.delegate = self;
  [super viewDidLoad];
}

아래 함수를 호출하면 키패드가 사라진다.
[textEdit resignFirstResponder];

아래 소스는 아무 곳이나 눌렀을 경우 키패드가 사라지도록 하는 팁

- (IBAction)onBackground:(id)sender {
NSArray *subs = self.view.subviews;
id curView;
for(curView in subs) {
if([curView conformsToProtocol:@protocol(UITextInputTraits)]) {
[curView resignFirstResponder];
}
}
}

뷰 최상단에 CustonButton을 넣고 위 함수를 Touch Up Inside 이벤트와 연결한다.

2011년 1월 7일 금요일

[Android]XML로 Shape Drawable 만들기

사각형
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#0000FF"/>
    <stroke android:width="4dp" android:color="#FFFFFF" android:dashWidth="1dp"
        android:dashGap="2dp"/>
    <padding android:left="7dp" android:top="7dp" android:right="7dp" android:bottom="7dp"/>
    <corners android:radius="4dp"/>
</shape>

원형
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <solid android:color="#0000FF"/>
    <stroke android:width="4dp" android:color="#FFFFFF" android:dashWidth="1dp"
        android:dashGap="2dp"/>
    <padding android:left="7dp" android:top="7dp" android:right="7dp" android:bottom="7dp"/>
    <corners android:radius="4dp"/>
</shape>

라인
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="line">
    <stroke android:width="4dp" android:color="#FFFFFF" android:dashWidth="1dp"
        android:dashGap="2dp"/>
</shape>

solid 대신 gradient를 사용하여 다양한 컬러 표현 가능
<gradient android:startColor="#000000" android:endColor="#FFFFFF" android:angle="270"/>

solid는 단색 채우기
stroke는 테두리 그리기
corners는 가장자리 둥글게 처리
padding은 패딩 처리
gradient는 그라데이션 처리(angle 270은 위에서 아래로 색 변경)