ในแอปของฉันฉันต้องการซ่อนแป้นพิมพ์เมื่อฉันเริ่มเลื่อน UITableView ฉันค้นหาเกี่ยวกับสิ่งนี้ในอินเทอร์เน็ตและคำตอบส่วนใหญ่คือคลาสย่อย UITableView (http://stackoverflow.com/questions/3499810/tapping-a-uiscrollview-to-hide-the-keyboard)
ฉันสร้างคลาสย่อย แต่มันใช้ไม่ได้
#import <UIKit/UIKit.h>
@protocol MyUITableViewDelegate <NSObject>
@optional
- (void)myUITableViewTouchesBegan;
@end
@interface MyUITableView : UITableView <UITableViewDelegate, UIScrollViewDelegate> {
id<MyUITableViewDelegate> delegate;
}
@end
.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 {
...
ชั้นใช้แบบนี้ แต่ฟังก์ชัน delegate myUITableViewTouchesBegan ไม่ทำงานใน ViewController
.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];
}
ฉันมีปัญหากับการใช้งานนี้:
1) myUITableViewTouchesBegan ไม่ทำงานใน ViewController
2) NSLog จาก MyUITableView.m - NSLog (@ "มอบหมาย myUITableViewTouchesBegan"); ทำงานเฉพาะเมื่อฉันสัมผัสโต๊ะ มันใช้งานได้อย่างไรเมื่อฉันเริ่มเลื่อน
ฉันลองแทนที่ scrollViewDidScroll แต่ comiler บอกว่า MyUITableVIew อาจไม่ตอบสนองกับสตริงนี้[super scrollViewDidScroll: scrollView];