Commonlife's Blog

My daily life

Archive for 9월 2012

iOS : 키보드 상태에 따른 화면제어

with 2 comments

기존 소스에서 키보드가 올라오면 키보드를 제외한 화면을 터치하면 키보드가 내려가는 걸 구현하려 했다.

* 조건사항 : 키보드를 제외한 화면에 버튼들이 많다. (실제 동작하는 버튼들)

 

* 계획 :

1. 화면을 덮는 UIView를 만든다.

2. 해당 UIView는 setHidden:YES 상태로 초기화

3. 키보드가 올라오면 해당 UIView는 setHidden:NO

4. UIView를 터치하면 키보드를 내린다.

5. 키보드가 내려가면 해당 UIView는 다시 setHidden:YES가 된다.

 

* 진행 중 문제 상황

1. xib 파일이 언어별로 나뉘어 존재하고 있었는데(2개) 상위 xib 파일에서 UIView를 붙였더니 실제 xib파일에 공통으로 적용되지 않는다.

  • 해결 : 각 xib파일 마다 UIView를 붙였음.

2. UIView에 터치 이벤트가 적용되지 않는다. (UIControlEventTouchUpInside)

  • 해결 : 결국 투명한 UIButton으로 바꾸고 이벤트를 적용시켰다.

3. 키보드 레이아웃을 default를 했음에도 줄바꿈이 되지 않는다.

  • 해결 : 아래 메소드에서 @”\n”을 따로 처리하고 있었다.
  • (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text

 

* 부가적으로 키보드 상태를 알수 있는 메소드들

  • (BOOL)textViewShouldBeginEditing:(UITextView *)textView : 말그대로 키보드가 나오는 시점. 여기서 UIButton을 setHidden:NO
  • (BOOL)textViewShouldEndEditing:(UITextView *)textView : 키보드가 들어가는 시점. 여기서 UIButton을 setHidden:YES
  • (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
Advertisements

Written by tocommonlife

2012/09/25 at 02:54

iOS : 갤러리를 통해 가져오는 이미지 crop하기

leave a comment »

기본 갤러리 혹은 카메라를 통해 이미지를 가져올 때 crop하여 가져오게 하고 싶었는데 기존 소스를 수정해야 했다. 문제는 기존의 ViewController들을 거쳐야 한다는 점.

AviewController에서 ActionSheet를 통해서 갤러리 혹은 카메라를 선택하게 한 후 이미지를 선택하면 선택한 이미지를 BviewController에서 띄우고 여기서 NavigationBar를 이용해 서버에 등록한다.

이 과정에서 crop 단계를 추가한 것이다. 그런데 문제가 BviewController에서 NavigationBar가 나오지 않는 문제점이 발생되는 것이다.

– 앨범에서 사진 가져오기 : UIImagePickerControllerSourceTypePhotoLibrary

– 필요한 것들 :

  • UIImagePickerControllerDelegate : image를 가져오기 위한 delegate.
  • UINavigationControllerDelegate : image를 가져온 후 navigation bar에서 ok, cancel을 위한 delegate.
  • UIImagePickerController : Image Picker를 가져오기 위한 변수

 

– source : 호출하려는 화면의 AviewController에서

UIImagePickerController *imgPickerController = [[UIImagePickerControlleralloc] init];
[imgPickerControllersetDelegate:self];
imgPickerController.allowsEditing = YES;     //편집모드(crop)
[imgPickerControllersetSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
// 갤러리에서 이미지를 가져옴.

//[imgPickerControllersetSourceType:UIImagePickerControllerSourceTypeCamera];
// 카메라를 통해 이미지를 가져옴.

[selfpresentModalViewController:imgPickerControlleranimated:YES];                     // 화면전환.

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    // 이미지를 가져온 후 처리작업.
    UIImage *cameraImage = [info objectForKey:UIImagePickerControllerEditedImage];

    // 카메라에서 가져온 경우 : 카메라로 사진을 찍고 바로 사용하기 때문에 ViewController를 만들 필요는 없음.
    if (picker.sourceType == UIImagePickerControllerSourceTypeCamera) {
        UIImageWriteToSavedPhotosAlbum(UIImage *image, id completionTarget, SEL completionSelector, void *contextInfo);
        [self dismissModalViewControllerAnimated:YES];
    }

    // 갤러리에서 가져온 경우 : 이미지를 가지고 새로운 ViewController를 만들어줘야 함.
    else if (picker.sourceType == UIImagePickerControllerSourceTypePhotoLibrary) {
        // crop한 이미지를 가지고 새로운 ViewController 만들기
        [picker pushViewController:newViewController animated:YES];
    }
}

– 새로운 ViewController에서 닥친 문제점은 기존에 사진을 바로 보여줄 때 NavigationBar가 잘 보이고 버튼들도 잘 보였음. 그런데 crop한 이미지로 대체하자 NavigationBar가 검은색으로만 나옴. 버튼들도 보이지 않아 작동하지 못함.

– BviewController에서 추가한 코드(원인은 찾지 못했지만 아래 코드를 넣어야만 navigationbar가 나타남.)

  • self.navigationController.navigationBarHidden=NO;

Written by tocommonlife

2012/09/14 at 02:29

NSLog 출력 내용

leave a comment »

2012-09-06 10:46:05.714 CMLSampleFoundation[575:403] The new date lives at 2012-09-06 01:46:05 +0000

  • 날짜 : 2012-09-06
  • 시간 : 10:46:05.714
  • 프로그램이름 : CMLSampleFoundation
  • 프로세스 ID : [575:403]
  • 출력내용 : The new date lives at 2012-09-06 01:46:05 +0000

Written by tocommonlife

2012/09/06 at 01:48

iOS에 게시됨

Tagged with ,