iOS 개발: UIWebView 내 비게 이 션 표시 줄 에 되 돌아 오기 및 닫 기 단 추 를 추가 합 니 다.

6787 단어 iOS 개발
iOS 개발 에서 원생 과 H5 의 상호작용 을 피 할 수 없다. 예 를 들 어 원생 페이지 의 한 버튼 에서 클릭 한 후에 H5 페이지 A 로 넘 어 갔다. A 페이지 에 또 하나의 버튼 이 있다. 클릭 한 후에 새로운 H5 페이지 B 를 추가 했다. B 에서 버튼 을 클릭 하고 새로운 H5 페이지 C 를 추가 했다. 만약 에 이때 우리 가 왼쪽 상단 의 반환 버튼 을 클릭 하면우리 의 원생 페이지 로 바로 돌아 갈 것 이다.이렇게 되면 사용자 의 체험 이 매우 좋 지 않 습 니 다. 우 리 는 WebView 에 버튼 을 추가 하 는 사건 을 처리 해 야 합 니 다.
이때 되 돌아 가기 단 추 를 다시 맞 추 려 면 C 페이지 에서 이전 H5 페이지 가 되 돌아 갈 수 있 는 지 판단 하고 자 합 니 다. 이전 페이지 가 있 는 지 H5 가 있 는 지 왼쪽 상단 의 되 돌아 오 기 를 누 르 면 B 페이지 로 돌아 가 고 B 페이지 의 왼쪽 상단 에 닫 기 단 추 를 추가 하려 면 이 닫 기 단 추 는 모든 H5 페이지 를 닫 고 원래 의 페이지 로 바로 돌아 가 는 역할 을 합 니 다.닫 기 단 추 를 누 르 지 않 고 되 돌아 오 기 를 누 르 면 B 페이지 에서 A 페이지 로 되 돌아 갑 니 다.되 돌아 오 기 를 다시 클릭 하면 H5 페이지 를 닫 고 원생 페이지 로 돌아간다.
  • 우선 웹 뷰 초기 화:
  • @property (nonatomic,strong,readwrite) UIWebView *announceWebView;
    
     - (UIWebView *)announceWebView {
        if (!_announceWebView) {
            _announceWebView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, deviceScreenWidth, deviceScreenHeight)];
            _announceWebView.backgroundColor = MAIN_VIEW_COLOR;
            _announceWebView.scalesPageToFit = YES;
            _announceWebView.allowsInlineMediaPlayback = YES;
            _announceWebView.mediaPlaybackRequiresUserAction = YES;
            [self.view addSubview:self.announceWebView];
        }
        return _announceWebView;
    }
  • 그 다음 에 네 비게 이 션 표시 줄 왼쪽 에 사용자 정의 반환 단추 와 닫 기 단 추 를 추가 합 니 다.
  • @property (nonatomic,strong,readwrite) UIBarButtonItem *returnButton;
    @property (nonatomic,strong,readwrite) UIBarButtonItem *closeItem;
    
     - (UIBarButtonItem *)returnButton {
        if (!_returnButton) {
            _returnButton = [[UIBarButtonItem alloc] init];
            UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
            UIImage *image = [UIImage imageNamed:@"fanhui.png"];
            [button setImage:image forState:UIControlStateNormal];//    “
            [button setTitle:@"   " forState:UIControlStateNormal];
            [button addTarget:self action:@selector(respondsToReturnToBack:) forControlEvents:UIControlEventTouchUpInside];
            [button.titleLabel setFont:[UIFont systemFontOfSize:17]];
            [button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
            [button sizeToFit];
            button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
            button.contentEdgeInsets = UIEdgeInsetsMake(0, -15, 0, 0);
            button.frame = CGRectMake(20, 0, 40, 40);
            _returnButton.customView = button;
            self.navigationItem.leftBarButtonItem = _returnButton;
        }
        return _returnButton;
    }
    
     - (UIBarButtonItem *)closeItem {
        if (!_closeItem) {
            _closeItem = [[UIBarButtonItem alloc] initWithTitle:@"  " style:UIBarButtonItemStyleDone target:self action:@selector(respondsToReturnToFind:)];
        }
        return _closeItem;
    }
  • 두 버튼 의 클릭 이벤트 처리
  •  - (void)respondsToReturnToBack:(UIButton *)sender {
        if ([self.announceWebView canGoBack]) {//     H5        
        //      ,       H5  ,             
            [self.announceWebView goBack];
            self.navigationItem.leftBarButtonItems = @[self.returnButton, self.closeItem];
        } else {
        //       ,   :
            [self.navigationController popViewControllerAnimated:YES];
        }
    }
    
     - (void)respondsToReturnToFind:(UIBarButtonItem *)sender {
        [self.navigationController popViewControllerAnimated:YES];
    }
  • 마지막 으로 [self. announce WebView loadRequest: [NSURLRequest requestWithURL: [NSURL URL WithString: API URL ANNOUNCEMENT]]] 로 WebView 인터페이스 내용 을 불 러 오고 관련 에이 전 트 를 실현 하면 됩 니 다.
  • 좋은 웹페이지 즐겨찾기