ios как - Скрыть клавиатуру при прокрутке UITableView




3 Answers

Не знаете, зачем вам подкласс UITableView для этого.

В контроллере представления, который содержит простой UITableView, попробуйте добавить это:

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
    [searchBar resignFirstResponder];
}
убрать на

В моем приложении я хочу скрыть клавиатуру, когда я запускаю прокрутку UITableView. Я ищу об этом в Интернете, и большинство ответов - это подклассы UITableView (http://.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

.час

#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, но компилятор сказал, что MyUITableVIew может не отвечать на эту строку [super scrollViewDidScroll: scrollView];




Вы можете сделать это прямо в Interface Builder. Выберите UITableView и откройте Инспектор атрибутов. В разделе «Просмотр прокрутки» установите поле « Клавиатура» « Отклонить при перетаскивании» .




Поскольку ваш вопрос заключается в том, чтобы обрабатывать скрытую клавиатуру только с одним условием (на прокрутке). Здесь я рекомендую одно решение для обработки текстового поля и клавиатуры, и оно работает как прелесть для UIViewController, UITableView и UIScrollView. Интересным фактом является то, что вам не нужно писать ни одной строки кода.

Вот вы: TPKeyboardAvoiding - удивительное решение для управления клавиатурой и прокруткой




Related