IOS Двойной щелчок по элементу ячейки в UITableView не будет прокручиваться

У меня есть UITableView который содержит UITextField в каждой ячейке
Когда я нажимаю UITextField в ячейке, клавиатура будет показывать и закрывать мою ячейку. Поэтому я перемещаю свою ячейку вверх, используя.

 - (void)keyboardWasShown:(NSNotification*)aNotification { CGPoint scrollPoint = CGPointMake(0, self.activeInputView.frame.origin.y); [self.tableView setContentOffset:scrollPoint animated:YES]; } 

Если я использую один клик по каждой ячейке, мое приложение работает нормально.
Однако я использую двойной щелчок по каждой ячейке (это означает, что я нажимаю на нее 2 раза очень быстро), моя ячейка перестанет прокручивать вверх.

7 Solutions collect form web for “IOS Двойной щелчок по элементу ячейки в UITableView не будет прокручиваться”

В этой строке

CGPoint scrollPoint = CGPointMake(0, self.activeInputView.frame.origin.y);

может быть 2 ошибки.

Во-первых, вы должны убедиться, что inputView, который вы захватили, является желаемым видом. Во-вторых, вы должны преобразовать выбранную точку в правильное представление, используя соответствующий метод.

См. Ссылку: https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/#//apple_ref/doc/uid/TP40006816-CH3-SW52

Для дальнейшего изучения нужен больше контекста.

Кажется, что решение TPKeyboardAvoiding является решением.

Вы уверены, что scrollPoint верен?

Я просто создал образец проекта с фиксированным смещением, и все работает отлично. Сценарий таблицы прокручивается вверх после однократного и двойного нажатия на UITextField определенного UITableViewCell .

 - (void)keyboardDidShow:(NSNotification *)notification { CGPoint point = CGPointMake(0.0, 30.0); [self.tableView setContentOffset:point animated:YES]; } 

вместо того, чтобы делать код для ручной настройки фрейма tableview. Позвольте мне дать вам предложение, вы можете использовать IQKeyboardManager, чей код доступен в cocoapods, и он будет справляться при нажатии на текстовое поле ячейки, просмотр таблицы будет автоматически прокручиваться.

Попробуйте использовать стороннюю библиотеку IQKeyboardManager, это поможет вам решить эту проблему.

https://github.com/hackiftekhar/IQKeyboardManager

Замените следующий код в файле AppDelegate.m, а затем вам не нужно использовать метод scrollview для работы с клавиатурой:

 @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [[IQKeyboardManager sharedManager] setEnable:YES]; [self.window makeKeyAndVisible]; return YES; } 

Вы создали отдельный класс UITableViewCell?

Я считаю, что при прокрутке UITableView ваш пользовательский интерфейс зависает или когда вы дважды вставляете свой UITableView, перестает отвечать на запросы или требует времени для ответа.

Вот рабочий пример. Вы используете свойства contentInset и scrollIndicatorInsets вашего прокрутки, чтобы избежать появления клавиатуры при ее появлении. Вы должны зарегистрироваться для уведомления о клавиатуре. Используйте информацию в уведомлениях, чтобы определить размер клавиатуры – вы никогда не знаете, что это будет.

Использование вставки содержимого – это правильный способ справиться с этим для просмотра прокрутки. Если впоследствии вам потребуется прокрутить строку редактирования в представлении, используйте UITableView.scrollToRowAtIndexPath (_ :, atScrollPosition :, анимированные 🙂

Обратите внимание, что он делает то же самое, когда пользователь скрывает / показывает панель завершения.

 import UIKit import CoreGraphics // our Cell class class Cell : UITableViewCell { // cell reuse identifier for table view static let Identifier = "Cell" // the object the cell represents/displays. Could be anything you like var value:AnyObject? { didSet { // update our text field when our cell value is set. self.textField.text = value as? String } } // use a text field to display our contents, since that allows editing and showing the keyboard lazy var textField:UITextField = { let textField = UITextField() self.contentView.addSubview( textField ) return textField }() override func layoutSubviews() { super.layoutSubviews() self.textField.frame = contentView.bounds.insetBy(dx: 20, dy: 4 ) } } // table view data source class class DataSource : NSObject, UITableViewDataSource { var numberOfRows:Int { return items.count } let items = [ "Seoul", "São Paulo", "Bombay", "Jakarta", "Karachi", "Moskva", "Istanbul", "Mexico", "Shanghai", "Tokyo", "New" York, "Bangkok", "Beijing", "Delhi", "London", "Hong Kong", "Cairo", "Tehran", "Bogota", "Bandung", "Tianjin", "Lima", "Rio de Janeiro", "Lahore", "Bogor", "Santiago", "St Petersburg", "Shenyang", "Calcutta", "Wuhan" ] func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return numberOfRows } func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCellWithIdentifier( Cell.Identifier ) as? Cell ?? Cell() cell.value = items[ indexPath.row ] return cell } } class ViewController : UIViewController { override func viewDidLoad() { super.viewDidLoad() // register for notifications when the keyboard appears: NSNotificationCenter.defaultCenter().addObserver( self, selector: "keyboardWillShow:", name: UIKeyboardWillChangeFrameNotification, object: nil) } override func viewDidLayoutSubviews() { tableView.frame = view.bounds } lazy var tableView:UITableView = { let tableView = UITableView() self.view.addSubview( tableView ) tableView.dataSource = self.dataSource tableView.delegate = self return tableView }() lazy var dataSource : DataSource = DataSource() // Handle keyboard frame changes here. // Use the CGRect stored in the notification to determine what part of the screen the keyboard will cover. // Adjust our table view's contentInset and scrollIndicatorInsets properties so that the table view content avoids the part of the screen covered by the keyboard @objc func keyboardWillShow( note:NSNotification ) { // read the CGRect from the notification (if any) if let newFrame = (note.userInfo?[ UIKeyboardFrameEndUserInfoKey ] as? NSValue)?.CGRectValue() { let insets = UIEdgeInsetsMake( 0, 0, newFrame.height, 0 ) tableView.contentInset = insets tableView.scrollIndicatorInsets = insets } } } // need to conform to UITableViewDelegate protocol since we are the table view's delegate extension ViewController : UITableViewDelegate { } // App set up stuff here: @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { lazy var window:UIWindow? = UIWindow() func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { window!.rootViewController = ViewController() window!.makeKeyAndVisible() return true } } 
  • UITableView отставание при установке AVPlayerItem
  • Заказ основных объектов данных в разделе просмотра таблицы
  • Как фильтровать массив словарей в 'updateSearchResultsForSearchController' для поиска UITableView с Swift
  • Динамический тип и саморазмерные ячейки со статической таблицей
  • UITableViewCell - Можно ли программно отобразить кнопку «Удалить»?
  • Воспроизведение видео в UITableViewCell (Vine) - проблемы с производительностью
  • Как получить indexPath.row таблицыView, который в настоящее время отображается?
  • Передача «правильных» данных из выбранной ячейки в UITableViewController в ViewController
  • UIPageViewController с UITableViewControllers вызывает исключение NSInternalInconsistencyException
  • Добавление подзаголовка в пользовательский viewForHeaderInSection прерывает навигацию VoiceOver
  • iPhone / iPad Table View Reload Only One Row вместо всей таблицы
  • Добавление большего количества прототипов ячеек в раскадровку iOS, чем размерность viewcontroller?
  • Interesting Posts

    Как преобразовать массив Int в строку? массив в Swift

    Использование UIPageViewController без раскадровки

    iOS – строка состояния случайным образом становится сплошной черной

    UIImagePickerController Снятая с хранения память

    Отправка Push Notification в iOS без использования сторонних сервисов, таких как Parse or Urban Airship

    iOS 9.3 не может получить эскиз из библиотеки фотографий, используя приложение iPhone на iPad

    Как добавить начальное дополнение для просмотра, добавленное внутри UIStackView

    Swift – Преобразование строки в Int

    Скрыть элементы управления в AVPlayerViewController – только при запуске

    curl отправил предупреждение Firebase Cloud Messaging, явно не появляющееся на устройстве iOS

    Разрешение экрана для симулятора iPhone 6.1 составляет 320×548 вместо 640×1136, почему он heppend?

    AVURLAsset правильно инициализируется, но иногда его ассоциированный AVPlayerLayer просто отображает черный

    Swift – динамически изменяет размер UIButton

    Main_iPhone.storyboard: Ошибка компиляции. Невозможно написать путь:

    Нужно пояснить странный синтаксис

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.