비디오: 스마트폰 고전게임(마메), 닌텐도, PSP 하는 방법 2024
iOS 앱에서 지오 코딩 기능을 사용하려면 몇 가지 작업을 수행해야합니다. Find 컨트롤러에있는 것들. 대부분 사용자가 입력해야하는 텍스트를 가져 오는 것을 중심으로해야합니다. 또한 텍스트를 지오 코딩해야하며 지오 코딩 된 위치가 Trip 컨트롤러 모델에 의해지도에 추가되는 Trip 모델 객체에 의해 Annotation으로 구현되어야합니다.
텍스트에 액세스하려면 먼저 텍스트 필드의 콘센트를 만들어야합니다. 다음 단계를 따르십시오.
-
Main_iPad를 선택하십시오. 프로젝트 네비게이터의 스토리 보드.
-
문서 개요에서 마스터보기 컨트롤러를 선택합니다.
-
Editor selector와 MasterViewController에서 Assistant를 선택하십시오. h 파일이 나타나지 않으면 점프 바를 사용하여 해당 파일로 이동하십시오.
-
문서 개요에서 마스터 뷰 컨트롤러 - 마스터 장면의 두 번째 테이블 뷰 섹션에 대한 펼침 삼각형을 열어 테이블 뷰 셀로 이동합니다.
-
표보기 셀을 열어 찾기 레이블과 텍스트가있는 내용보기를 나타냅니다.
-
해당 셀의 펼침 삼각형을 열어 텍스트 필드를 표시 한 다음 @interface 및 -d 컴파일러 지시문 사이의 테두리 스타일 텍스트 필드에서 마스터보기 컨트롤러 인터페이스 (어시스턴트 편집기의 컨트롤)로 드래그하고 추가합니다 findText라는 콘센트
이것은 콘센트를 만드는 또 다른 방법입니다.
UITextField 객체는 편집 가능한 텍스트를 표시하고 사용자가 Return 키를 누를 때 해당 델리게이트에 메시지를 보내는 컨트롤입니다. 일반적으로 UITextField 객체를 사용하여 사용자가 소량의 텍스트를 입력 한 다음 무언가를 검색하거나 무언가를 검색하거나 새 연락처를 추가 할 수 있습니다.
텍스트 필드를 선택하고 Xcode 도구 모음의 편집기 선택기에서 표준 편집기를 선택한 다음 유틸리티 영역을 엽니 다. Attributes 속성에서 여러 텍스트 필드 속성을 설정할 수 있습니다.
사용자가 텍스트를 입력 한 시점을 어떻게 알 수 있습니까? 또한 키보드를 표시하고 숨기는 방법은 무엇입니까? 사용자가 UITextField를 탭하면 첫 번째 응답자가되고 키보드가 자동으로 올라와 사용자가 텍스트를 입력 할 수있게됩니다. 그렇게하기 위해 할 일을 할 필요가 없습니다.
사용자가 텍스트 입력을 마쳤 으면 Return 키를 누릅니다. 이동 키로 레이블을 바꿀 수있는 Return 키를 누릅니다.
Go 키를 두드리면 텍스트 필드에 델리게이트가 있는지 여부와 델리게이트가 textFieldShouldReturn: 메서드 (선택 사항 인 UITextFieldDelegate 프로토콜 메서드 중 하나)를 구현하는지 여부가 결정됩니다.델리게이트가 그렇게하면, 델리게이트에게 textFieldShouldReturn: 메시지를 보냅니다. 그래서 textFieldShouldReturn:은 텍스트를 포착 할 장소입니다.
텍스트를 캡처하여 FindController로 보내려면 텍스트 필드의 델리게이트가되고 textFieldShouldReturn: 메서드를 구현해야합니다. 하지만 그렇게하기 전에 Interface Builder에서 한 가지 더해야합니다.
먼저 MasterViewController를 UITextFieldDelegate로 만듭니다. MasterViewController를 업데이트하십시오. h를 굵게 표시된 코드와 함께 사용하여 UITextFieldDelegate 프로토콜을 채택하도록합니다.
#import @interface MasterViewController: UITableViewController
@property (강하고 비 구조) DetailViewController * detailViewController; @property (weak, nonatomic) IBOutlet UITextField * findText; -d 무거움 작업은 TextField의 textFieldShouldReturn: delegate 메소드에서 수행됩니다. 대리자는 편집중인 텍스트 필드를 인수로 전달되며 마스터보기 컨트롤러는이를 찾기 컨트롤러로 전달합니다.
먼저, MasterViewController에 굵게 표시된 코드를 추가하여 MasterViewController 구현을 업데이트해야합니다. 엠.
#import "MasterViewController.h"#import "DetailViewController.h"#import "AppDelegate.h"#import "Trip. h
" #import "FindController. h" @implementation MasterViewController MasterViewController를 textField 대리자로 만들어야합니다. 이를 위해, MasterViewController의 viewDidLoad에 굵게 표시된 코드를 추가하십시오. 엠.
- (void) viewDidLoad {[super viewDidLoad]; AppDelegate * appDelegate = [[UIApplication sharedApplication] delegate]; 본인. title = appDelegate. 여행. destinationName; UIImageView * imageView = [[UIImageView alloc] initWithImage: [appDelegate. 여행 목적지 이미지]]; 본인. tableView. backgroundView = imageView; UISwipeGestureRecognizer * swipeGesture = [[UISwipeGestureRecognizer alloc] initWithTarget: 자기 행동: @selector (handleSwipeGesture:)]; swipeGesture. direction = UISwipeGestureRecognizerDirectionLeft; [본인. addGestureRecognizer보기: swipeGesture];
자아. findText. 대의원 = 자기; } 이제 masterViewController에 코드를 추가하여 textFieldShouldReturn: delegate 메소드를 구현할 수 있습니다. 엠.
여기에 일부 라이브 이슈가 있습니다. FindController에 findLocation 속성을 추가해야합니다.
- (BOOL) textFieldShouldReturn: (UITextField *) textField {[textField resignFirstResponder]; ("[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {FindController * findController = [[UIStoryboard storyboardWithName: @"Main_iPad "번들: nil] instantiateViewControllerWithIdentifier: @"Find "]; findController. findLocation = textField. 본문; DetailViewController * currentDetailViewController; currentDetailViewController = [자기. splitViewController. viewControllers lastObject]; if (currentDetailViewController. masterPopoverController! = nil) [currentDetailViewController. masterPopoverController dismissPopoverAnimated: 예]; 본인. splitViewController. 델리게이트 = findController; findController.popOverButton = currentDetailViewController. popOverButton; findController. masterPopoverController = currentDetailViewController입니다. masterPopoverController; NSMutableArray * 컨트롤러 = [NSMutableArray arrayWithObjects: (self. splitViewController. viewControllers) [0], findController, nil]; 본인. splitViewController. viewController = 컨트롤러;} else {FindController * findController = [[UIStoryboard storyboardWithName: @ "Main_iPhone"번들: nil] instantiateViewControllerWithIdentifier: @ "Find"]; findController. findLocation = textField. 본문; [본인.
코드가 첫 번째로하는 일은 텍스트 필드에 메시지를 보내 첫 번째 응답자로 사퇴하도록 요청하는 것입니다.
[textField resignFirstResponder];
키보드를 없애면 부작용이 있습니다.
다음에하는 일은 앱이 iPad 또는 iPhone에서 실행되는지 여부에 따라 상황이 달라지는 또 다른 경우입니다.
iPad에서 실행중인 경우 Main_iPad에서 FindController를 인스턴스화합니다. 스토리 보드.
FindController * findController = [[UIStoryboard storyboardWithName: @ "Main_iPad"번들: nil] instantiateViewControllerWithIdentifier: @ "Find"];
그런 다음 TextField의 텍스트를 FindController findLocation 속성에 할당합니다.이 속성은 곧 FindController에 추가됩니다.
findController. findLocation = textField. 본문;
그런 다음 팝업을 닫습니다.
DetailViewController * currentDetailViewController; currentDetailViewController = [자기. splitViewController. viewControllers lastObject]; if (currentDetailViewController. masterPopoverController! = nil) [currentDetailViewController. masterPopoverController dismissPopoverAnimated: 예];
그런 다음 popOverButton 및 masterPopoverController 속성을 할당하고 Split View 컨트롤러 대리인 인 FindController를 만듭니다.
자아. splitViewController. 델리게이트 = findController; findController. popOverButton = currentDetailViewController. popOverButton; findController. masterPopoverController = currentDetailViewController입니다. masterPopoverController;
그러면 Split View 컨트롤러의 viewControllers 속성에서 FindController를 새로운 Detail View 컨트롤러로 간단하게 만듭니다.
NSMutableArray * 컨트롤러 = [NSMutableArray arrayWithObjects: (self. splitViewController. viewControllers) [0], findController, nil]; 본인. splitViewController. viewController = 컨트롤러; 당신이 다루고있는 iPhone의 경우 FindController를 인스턴스화하고 findLocation 속성을 할당 한 다음 네비게이션 컨트롤러 스택에 밀어 넣으면 뷰가 제자리에 들어가게됩니다.
FindController * findController = [[UIStoryboardstoryboardWithName: @ "Main_iPhone"번들: nil] instantiateViewControllerWithIdentifier: @ "Find"]; findController. findLocation = textField. 본문; [본인. navigationController pushViewController: findController animated: YES];
Text 필드가 기본 동작을 구현하게하려면 마침내 YES를 반환합니다.