In meiner App möchte ich die Tastatur ausblenden, wenn ich mit dem Scrollen von UITableView beginne. Ich suche darüber im Internet und die meisten Antworten sind UITableView (http://stackoverflow.com/questions/3499810/tapping-a-uiscrollview-to-hide-the-keyboard).
Ich habe Unterklasse gemacht, aber es funktioniert nicht.
#import <UIKit/UIKit.h>
@protocol MyUITableViewDelegate <NSObject>
@optional
- (void)myUITableViewTouchesBegan;
@end
@interface MyUITableView : UITableView <UITableViewDelegate, UIScrollViewDelegate> {
id<MyUITableViewDelegate> delegate;
}
@end
.m Datei
#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 {
...
Ich benutze diese Klasse so. Die Delegatenfunktion myUITableViewTouchesBegan funktioniert jedoch nicht in 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];
}
Ich habe einige Probleme mit dieser Implementierung:
1) myUITableViewTouchesBegan funktioniert nicht in ViewController
2) NSLog von MyUITableView.m - NSLog (@ "delegate myUITableViewTouchesBegan"); Arbeite nur, wenn ich den Tisch berühre. Wie hat es funktioniert, auch wenn ich anfange zu scrollen?
Ich versuche, scrollViewDidScroll zu überschreiben, aber der Comiler hat gesagt, dass MyUITableVIew möglicherweise nicht auf diese Zeichenfolge reagiert [super scrollViewDidScroll: scrollView];