Trong ứng dụng của tôi, tôi muốn ẩn bàn phím khi bắt đầu cuộn UITableView. Tôi tìm kiếm về điều này trên internet và hầu hết câu trả lời là phân lớp UITableView (http://stackoverflow.com/questions 43299810/ticking-a-uiscrollview-to- leather-the-keyboard).
Tôi đã tạo lớp con nhưng nó không hoạt động.
#import <UIKit/UIKit.h>
@protocol MyUITableViewDelegate <NSObject>
@optional
- (void)myUITableViewTouchesBegan;
@end
@interface MyUITableView : UITableView <UITableViewDelegate, UIScrollViewDelegate> {
id<MyUITableViewDelegate> delegate;
}
@end
tập tin .m
#import "MyUITableView.h"
@implementation MyUITableView
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
NSLog(@"delegate scrollView"); //this is dont'work
[super scrollViewDidScroll:scrollView];
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"delegate myUITableViewTouchesBegan"); // work only here
[delegate myUITableViewTouchesBegan];
[super touchesBegan:touches withEvent:event];
}
- (void)dealloc {
...
Tôi sử dụng lớp học như thế này. Nhưng chức năng ủy nhiệm myUITableViewTouchesBegan không hoạt động trong ViewContoder
.h
#import <UIKit/UIKit.h>
#import "MyUITableView.h"
@interface FirstViewController : UIViewController <UITableViewDelegate, UISearchBarDelegate, MyUITableViewDelegate> {
MyUITableView *myTableView;
UISearchBar *searchBar;
}
@property(nonatomic,retain) IBOutlet MyUITableView *myTableView;
...
.m
- (void) myUITableViewTouchesBegan{
NSLog(@"myUITableViewTouchesBegan");
[searchBar resignFirstResponder];
}
Tôi gặp một số rắc rối với việc triển khai này:
1) myUITableViewTouchesBegan không hoạt động trong ViewContoder
2) NSLog từ MyUITableView.m - NSLog (@ "ủy nhiệm myUITableViewTouchesBegan"); chỉ làm việc khi tôi chạm vào bàn. Làm thế nào nó cũng hoạt động khi tôi bắt đầu cuộn?
Tôi thử ghi đè scrollViewDidScroll nhưng comiler nói rằng MyUITableVIew có thể không phản hồi trên chuỗi này [super scrollViewDidScroll: scrollView];