'UIAlertView'에 해당되는 글 1건

  1. 2010.07.12 [iPhone] - 시작하세요! 아이폰 3 프로그래밍 - Part 4. 사용자 인터페이스, 좀 더 재미있게 만들기

[iPhone] - 시작하세요! 아이폰 3 프로그래밍 - Part 4. 사용자 인터페이스, 좀 더 재미있게 만들기

iPhone/[위키북스]시작하세요! 아이폰3 프로그래밍 2010. 7. 12. 22:05

* 인터페이스 빌더 중 Library 항목에 Image View
-- 드로잉(Drawing) 체크 박스
--- Opaque :  불투명 항목 - 아이폰 OS에게 이 뷰 밑에 있는 것은 그릴 필요가 없고 컨트롤을 그릴때 몇 가지 방법으로 최적화를 해서 속도를 높일 수 있게 한다.
--- Hidden : 숨김 - 사용자는 그 컨트롤을 볼 수 없다.
--- Clear Context before Drawing - 실제 컨트롤을 그리기 전에 컨트롤러의 전체 영역을 모두 지운 뒤에 그릴게 될 것이다.
--- Clip Subviews : 하위뷰 자르기 - 체크하면 부모 영역 안의 하위뷰만 그린다. 체크 하지 않는 것이 기본값
--- Autoresize Subviews - 뷰의 크기가 변경되면 하위뷰의 크기도 변경되도록 설정한는 기능

-- Interaction : 상호작용
--- User Interaction Enabled : 사용자가 이객체와 무엇인가를 할 수 있는지를 설정한다. 체크 하지 않으면 그 컨트롤은 어떤 액션 메서드도 유발할 수 없기다.
--- Multiple Touch : 컨트롤이 멀티터치 이벤트를 받을 수 있는지를 결정한다.

* 인터페이스 빌더 중 Library 항목에서 Text Field
-- Text Field
--- Placeholder : 텍스트 필드 안에서 회색으로 표시할 텍스트를 설정
--- Clear When Editing Begins :  텍스트를 입력하려고 테스트 필드를 선택했을때 기존에 있던 값을 지우고 새롭게 입력을 시작
--- Text Input Traits
------ Capitalize : 입력되는 순서에 따른 대문자 표시여부
------ Auto-enable Return Key : 텍스트 필드에 한 글자 이상을 입력할 때까지 리턴 키는 비활성화 상태를 유지
------ Secure :텍스트 필드의 글자를 보여줄 것인지를 결정하는 옵션

* Done을 누르면 키보드 사라지게 만들기
- 아이폰의 키보드는 물리적인 키보드가 아닌 소프트웨어 기반의 키보드 이다.  사용자가 Done버튼을 누르면 "Did end on Exit" 이벤트가 생성된다. 그때 텍스트 필드가 제어를 포기하면 키보드가 사라진다.
- 퍼스트 리스폰더(first responder)의 개념은 '사용자가 현재 상호작용 중인 컨트롤'. 이 메서드에서 어떤 컨트롤이든 이 액션을 유발하면 퍼스트 리스폰더 상태를 포기하게 만든다. 텍스트 필드가 퍼스트 리스폰더임일 포기하면 키보드는 사라진다.
- .h 파일에 아래 추가
-(IBAction) textFieldDoneEditing: (id) sender

- .m 파일에 아래 추가
-(IBAction) textFieldDoneEditing: (id) sender
{
  [sender resignFirstResponder];
}

* 액션 메서드를 호출할 수 있는 모든 컨트롤 들은 UIControl의 하위클래스이다.

* UISegmentedControl의 selectedSegmentIndex 속성은 현재 선택된 세그먼트의 인덱스를 정수로 알려준다. 분할 컨트롤의 첫 번째 세크먼트인 Switches의 인덱스 값은 0이다.

* 액션 시트는 사용자에게 2개 이상의 항목에 대해 강제적인 선택을 받고자 할 때 사용된다.
-- 액션 시트는 화면의 아래 쪽에서 나타나며 사용자의 선택을 받기 위한 여러 버튼들로 구성된다. 사용자는 버튼 중 하나를 선택하기 전까지는 더 이상 진행할 수 없다.
-- 액션 시트를 사용하기 위해서는 컨트롤러 클래스가 델리케이트를 사용하면서 클래스가 UIActionSheetDelegate프로토콜을 따르게 해야 한다.

 UIActionSheet *actionSheet = [[UIActionSheet alloc]
          initWithTitle:@"Are you sure ?"
          delegate:self
          cancelButtonTitle:@"No Way!"
          destructiveButtonTitle:@"Yes, I'm Sure!"
          otherButtonTitles:nil];
 [actionSheet showInView: self.view];
 [actionSheet release];

+ 첫번째 인자(initWithTitle) : 액션 시트의 제목
+ 두번째 인자(delegate) : 액션 시트의 델리게이트는 시트에 있는 버튼을 눌려졌을때 알려주는 역할을 한다. 좀더 구체적으로 actionSheet:didDismissWithButtonIndex: 메소드가 호출
+ 세번째 인자(cancelButtonTitle) : 사용자가 더 이상 진행을 원치 않을 때 사용될 버튼에 제목을 설정.
+ 네번째 인자(destructiveButtonTitle) : 종료 버튼에 사용될 제목
+ [actionSheet showInView:self.view] = 액션 시트 생성 후에 화면 상에 액션 시트를 출력하는 코드


* 경고창은 화면의 중앙에 나타나며 파란 색의 둥그스름한 사각형 모양을 하고 있다.
--경고창도 액션 시트처럼 애플리케이션을 계속해서 진행하기 전에 사용자의 응답을 받는 용도로 사용된다.

-(void) actionSheet: (UIActionSheet *) actionSheet didDismissWithButtonIndex: (NSInteger) buttonIndex
{
 if(buttonIndex != [actionSheet cancelButtonIndex])
 {
  NSString *msg = nil;
  
  if(nameField.text.length > 0)
   msg = [[NSString alloc] initWithFormat:@"You can breathe easy, %@, everything went OK.",nameField.text];
  else 
   msg = @"You can breathe easy, everything went OK.";
  
  UIAlertView *alert = [[UIAlertView alloc] 
         initWithTitle:@"Something was done"
         message:msg
         delegate:self
         cancelButtonTitle:@"Phew!"
         otherButtonTitles:nil];
  [alert show];
  [alert release];
  [msg release];
 }
}
: