最佳答案
在我的应用程序我想隐藏键盘时,我开始滚动 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 {
...
我像这样使用这个类,但是委托函数 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) myUITableViewTouchesBegn don’t work in ViewController
2)来自 MyUITableView.m-NSLog (@“ committee myUITableViewTouchesBegan”) ;的 NSLog 只有当我触摸桌面时才能工作。当我开始滚动时,它是如何工作的?
我试着覆盖 scrollViewDidScroll,但是 comiler 说 MyUITableView 可能不会响应这个字符串 < i > [ super scrollViewDidScroll: scrollView ] ;