2011-12-08 34 views
5

Tôi có một UIView tùy chỉnh mà thực hiện giao thức UIKeyInput và cóTuỳ chỉnh UIView và becomeFirstResponder

- (BOOL) canBecomeFirstResponder{ 
    return YES; 
} 

được định nghĩa trong lớp con. Khi gọi:

[customView becomeFirstResponder]; 
NSLog(@"is first? %i",[customView isFirstResponder]); 

trong một nút bấm, nó sẽ trả về false, mặc dùcanBecomeFirstResponder được thiết lập đúng cách và tất cả các chức năng giao thức UIKeyInput được thực hiện. Điều gì khác có thể ngăn chặn chế độ xem này trở thành người trả lời đầu tiên? Nó tồn tại bên trong một scrollView và một khung nhìn tùy chỉnh khác nếu điều đó có ích.

Cập nhật:

Tôi đã kiểm tra để xem những gì responder đầu tiên hiện nay là với:

UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow]; 
UIView *firstResponder = [keyWindow performSelector:@selector(firstResponder)]; 

và đáng ngạc nhiên là firstRespondernil. Vì vậy, không có gì có vẻ là hogging các sự kiện.

+0

Có điều gì đó khác từ chối từ bỏ phản hồi đầu tiên ngay bây giờ không? Giống như một trường văn bản hoặc một cái gì đó với một đại biểu tùy chỉnh? –

Trả lời

7

Bạn đã ghi đè becomeFirstResponder?

Các lớp con có thể ghi đè phương thức này để cập nhật trạng thái hoặc thực hiện một số hành động như làm nổi bật lựa chọn.

followup:

lớp con có thể ghi đè phương pháp này để cập nhật trạng thái hoặc thực hiện một số hành động như làm nổi bật vùng chọn.

Đối tượng trả lời chỉ trở thành người trả lời đầu tiên nếu đáp ứng hiện tại có thể từ chức trạng thái trả lời đầu tiên (canResignFirstResponder) và người trả lời mới có thể trở thành người trả lời đầu tiên.

Bạn có thể gọi phương thức này để tạo đối tượng phản hồi, chẳng hạn như xem phản hồi đầu tiên. Tuy nhiên, bạn chỉ nên gọi nó trên chế độ xem đó nếu nó là một phần của cấu trúc phân cấp chế độ xem. Nếu thuộc tính cửa sổ của chế độ xem giữ đối tượng UIWindow, thuộc tính này đã được cài đặt trong cấu trúc phân cấp chế độ xem; nếu nó trả về nil, chế độ xem được tách ra khỏi bất kỳ cấu trúc phân cấp nào.

Bạn đã xác minh bạn đáp ứng tất cả các điều kiện trên chưa?

+0

Không, nhưng điều đó thật tuyệt vời mà bạn có thể. – Ralphleon

+0

Tôi chỉ phân lớp nó để chơi xung quanh, và thực sự là siêu trở về NO: ( – Ralphleon

+0

Nghĩ rằng có thể đó là trường hợp. – Steve