2013-09-26 41 views
10

Trong iOS 6 Tôi đã sử dụng để trình bày bàn phím trong viewDidLoad.Hiển thị bàn phím vào đúng thời điểm iOS7

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    [txtField becomeFirstResponder]; 
} 

Bằng cách này, khi điều hướngChuyển sang chế độ xem mớiController, bàn phím đã ở đó, hoạt ảnh mượt mà từ trái sang phải và tránh hoạt ảnh từ dưới lên.

Trong iOS 7, hành vi này có vẻ bị hỏng.

Nếu tôi thêm [txtField becomeFirstResponder] vào viewDidLoad, bàn phím xuất hiện ở giữa hoạt ảnh đẩy, đã ở vị trí cuối cùng: một hiệu ứng khó chịu !!

Tôi đã cố gắng di chuyển [txtField becomeFirstResponder] trong viewWillAppear, nhưng kết quả cuối cùng không thay đổi.

Bạn có biết cách lấy lại hành vi iOS 6, đẩy chế độ xem mớiController và bàn phím cùng nhau không?

CHỈNH SỬA: Sử dụng bộ hẹn giờ không hoạt động ... bất kỳ thời gian trễ nào tôi đã đặt, bàn phím chỉ được hiển thị ở cuối hoạt ảnh đẩy.

Cho đến nay, tốt nhất tôi nên thử là đặt [txtField becomeFirstResponder] trong viewWillLayoutSubviews hoặc viewDidLayoutSubviews. Thật không may, làm như vậy làm việc khi đẩy viewController nhưng không phải khi popping trở lại (bàn phím không xuất hiện).

+0

Hãy trì hoãn .5 giây sử dụng bộ hẹn giờ trong ios 7. – yen

+0

Cảm ơn bạn đã đề xuất, rất tiếc nó không hoạt động đối với tôi. Xin vui lòng, hãy xem EDIT của tôi. – Beppe

Trả lời

12

Tôi đã quản lý ngoại suy cách giải quyết của bạn trong viewWillLayoutSubviews để buộc thiết bị hoạt động.

- (void)viewWillLayoutSubviews { 

    if (![self.textField1 isFirstResponder] && ![self.textField2 isFirstResponder] && ...) { 
     [self.textField1 becomeFirstResponder]; 
    } 
} 

Điều này làm việc cho tôi khi cả hai đẩy lên ngăn xếp và sau khi loại bỏ bộ điều khiển chế độ xem phương thức.

+3

Tuyệt vời! .. đây chính xác là những gì tôi cần .. ViewWillAppear quá sớm và ViewDidAppear đã quá muộn. – delux247

Các vấn đề liên quan