En mi aplicación, quiero ocultar el teclado cuando empiezo a desplazar UITableView. Busco sobre esto en Internet, y la mayoría de las respuestas son subclases UITableView (http://stackoverflow.com/questions/3499810/tapping-a-uiscrollview-to-hide-the-keyboard).
Hice una subclase pero no funciona.
#import <UIKit/UIKit.h>
@protocol MyUITableViewDelegate <NSObject>
@optional
- (void)myUITableViewTouchesBegan;
@end
@interface MyUITableView : UITableView <UITableViewDelegate, UIScrollViewDelegate> {
    id<MyUITableViewDelegate> delegate;
}
@end
archivo .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 {
...
Yo uso esta clase como esta. Pero la función delegar myUITableViewTouchesBegan no funciona en 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;
...
.metro
- (void) myUITableViewTouchesBegan{
    NSLog(@"myUITableViewTouchesBegan");
    [searchBar resignFirstResponder];
}
Tengo algunos problemas con esta implementación: 
1) myUITableViewTouchesBegan no funciona en ViewController 
2) NSLog de MyUITableView.m - NSLog (@ "delegar myUITableViewTouchesBegan");   funciona solo cuando toco la mesa. ¿Cómo funciona también cuando empiezo a desplazarme? 
Intento anular scrollViewDidScroll pero el comiler dijo que MyUITableVIew puede no responder en esta cadena [super scrollViewDidScroll: scrollView];
fuente

Puede hacerlo directamente en Interface Builder. Seleccione su
UITableViewy abra el Inspector de atributos. En la sección Vista de desplazamiento, configure el campo Teclado en Descartar al arrastrar .fuente
Solo para agregar una actualización a las respuestas anteriores. Lo siguiente funcionó para mí en Swift 1.2
o
fuente
Con Swift 5
Para ocultar el teclado al desplazarse por TableView y detener la edición correctamente, aún necesitamos combinar dos tipos de respuestas:
ViewDidLoad()código (como explicó Pei ) por ejemplo:UITableViewControllerclasefuente
Solución de trabajo sin escribir una sola línea de código en su controlador:
Como su pregunta es manejar el teclado oculto con una sola condición (en desplazamiento). Pero aquí estoy recomendando una solución para manejar el campo de texto y el teclado juntos que funciona de maravilla para UIViewController, UITableView y UIScrollView. El hecho interesante es que no necesita escribir una sola línea de código.
Aquí tienes: TPKeyboardAvoiding: una solución increíble para manejar el teclado y el desplazamiento
fuente
Tarea
Ocultar el teclado mediante programación cuando se desplaza UITableView en Swift 3
Detalles
xCode 8.2.1, swift 3
Solución
Muestra completa
Resultado
fuente
Después de iOS 7, puedes usar la propiedad tableview
Swift 3.0+
C objetivo
Para versiones anteriores, la implementación del delegado de vista de desplazamiento podría funcionar.
fuente