2013-08-15 26 views
5

Tôi hiện đang xây dựng một ứng dụng bằng cách sử dụng UIPageViewController. Nó đang làm việc như tôi mong đợi cho đến khi nó đạt đến trang cuối cùng có chứa số lượng của UITextField.Hành vi UIPageViewController không mong đợi

Nhưng khi tôi khai thác một trong các trường hợp của UITextField, nó đột nhiên nhảy đến trang trước mà không có lý do nào thay vì hiển thị bàn phím. Khi tôi cuộn qua trang cuối cùng và nhấn lại vào trường văn bản, nó hoạt động tốt mà không gặp bất kỳ sự cố nào.

Cũng tốt khi hiển thị trang cuối cùng ngay lập tức bằng cách nhấn vào nút điều hướng liên kết đến trang cuối cùng và được đính kèm với cá thể UIPageViewController.

Sự cố này chỉ xảy ra khi tôi cuộn qua các trang từ trang đầu tiên đến trang cuối cùng và nó chỉ xảy ra một lần ở lần thử đầu tiên.

Tôi nghi ngờ có vấn đề về bộ nhớ thấp, vì vậy tôi đặt các điểm ngắt trong phương thức - didReceiveMemoryWarning của cả trường hợp UIPageViewController và bộ điều khiển xem trang cuối cùng. Nhưng họ không bao giờ được gọi.

Các thử thứ hai là tôi đã thêm một breakpoint trong phương pháp quan điểm điều khiển trang cuối cùng của -willMoveToParentViewController: và thiết lập tình trạng của mình cho parent == nil (khi nó được lấy ra khỏi tầm nhìn mẹ điều khiển, đó là dụ UIPageViewController trong câu hỏi)

Khi tôi chạy ứng dụng, ngăn xếp cuộc gọi của breakpoint nói rằng phương thức này được gọi bởi -_flushViewController:animated: của UIPageViewController.

Tôi không biết tại sao this -flushViewController: animated: được gọi. Nếu tôi có thể tìm ra nguyên nhân, nó sẽ giúp tôi khắc phục vấn đề.

Có ai có thể giúp tôi không?

+0

Xin chào! Bạn có thể tìm ra điều này không? Im đau khổ với cùng một vấn đề chính xác :( – VarunMurali

Trả lời

1

Tôi không chắc mã này có trong mã của bạn, nhưng một cách tiếp cận có thể xảy ra trong việc gỡ lỗi này là thử và nắm bắt sự kiện 'UIKeyboardWillShowNotification' để kiểm tra xem nó có kích hoạt đúng không.

Cũng cố gắng đặt điểm ngắt tại sự kiện viewWillAppear của trang để kiểm tra xem tất cả các UITextField s đã được khởi tạo đúng chưa - Tôi nghi ngờ rằng tại thời điểm bạn nhấn vào trường văn bản đầu tiên chưa phải tất cả chúng đều được khởi tạo , có nghĩa là đối tượng nhận hành động nhấn sẽ là UIPageViewController của bạn thay vì UITextField.

0

Tôi tìm thấy câu trả lời ở đây:

Cannot Impliment UITextview inside a UIPageViewController

tín dụng đi hoàn toàn với anh.

Tôi có thể xác nhận rằng nó hoạt động. Dưới đây là những gì tôi đã làm trong bộ điều khiển chế độ xem của tôi:

//TextField 
    UIScrollView *textFieldScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, width, height)]; 
    textField = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, width, height)]; 
    [textField setText:@""]; 
    [textField setBackgroundColor:[UIColor whiteColor]]; 
    [textField.layer setCornerRadius:5.0f]; 
    [textField setDelegate:self]; 

    [textFieldScrollView addSubview:textField]; 
    [_someView addSubview:textFieldScroll]; 

Hoạt động như một sự quyến rũ. Hãy cho tôi biết nếu bạn có bất kỳ câu hỏi nhiều hơn nữa.