2015-01-17 24 views
6

Trong iOS 8 Apple giới thiệu một tài sản mới theo UIResponder gọi inputAccessoryViewController. Tuy nhiên, không có tài liệu nào giải thích cách người ta có thể sử dụng nó.Làm thế nào để sử dụng inputAccessoryViewController trong iOS 8

Hơn nữa, trong iOS 8, thiết lập thuộc tính inputAccessoryView của lớp con UIViewController và làm cho lớp con trả lời đầu tiên dường như khiến bộ điều khiển chế độ xem bị rò rỉ.

Câu hỏi của tôi là: Làm cách nào để sử dụng một số inputAccessoryViewController trong lớp con UIViewController? Điều đó có giải quyết được vấn đề rò rỉ bộ nhớ không?

+0

Bạn đang sử dụng một 'UIInputViewController' trong 'UIViewController' tùy chỉnh phân lớp của bạn là' inputAccessoryViewController 'và cái nào không được phân phối? – Francescu

+0

Hiển thị mã thực tế, xin vui lòng. – matt

Trả lời

-1

Thêm phương pháp này trong mã của bạn. Điều này sẽ giúp bạn. từ iOS 7 bạn cần phải trả lại UIView chỉ như accessoryView.

-(UIView *)inputAccessoryView{ 
     UIView *accessoryView = [[UIView alloc] initWithFrame:toolView.frame]; 
     toolView.frame = CGRectMake(0, 0, self.view.frame.size.width, 50); 
     [accessoryView addSubview:toolView]; 
     return accessoryView; 
} 
0

Nếu bạn muốn sử dụng inputAccessoryViewController, bạn cần phải phân lớp bất kỳ UITextView hoặc UITextField điều khiển và ghi đè lên readwrite tài sản inputAccessoryViewController.

@interface MyTextView: UITextView 

@property (nonatomic, retain) UIInputViewController *inputAccessoryViewController; 

@end 

Lưu ý rằng bộ điều khiển xem bạn cung cấp phải là một UIInputViewController (mà sẽ cung cấp cho bạn truy cập vào đại biểu đầu vào và thông tin tài liệu văn bản) và sẽ tạo ra 'inputView' (như self.view) nếu bạn gọi [super loadView], bạn có thể thêm các bản xem phụ của mình vào. UIInputView này sẽ được theo kiểu thích hợp cho bàn phím. Tôi đã không thử nghiệm với cố gắng để tải từ .xib trong trường hợp này.

Tôi cũng tìm thấy kích thước đúng inputView (và tránh một loạt các sai sót hạn chế), tôi đã thêm đoạn mã sau

- (void)updateViewConstraints 
{ 
    self.view.frame = CGRectMake(0, 0, CGRectGetWidth(self.view.superview.frame), myAccessoryHeight); 
    [super updateViewConstraints]; 
} 
Các vấn đề liên quan