自动滚动UITableView以显示正在编辑的行下面的行**

时间:2015-09-03 12:00:07

标签: ios objective-c iphone uitableview ipad

我在ViewController中有UITableView(不是UITableViewController),每行UITextFields。我希望TableView能够自动滚动,以便始终显示正在编辑的行 行。这允许用户点击下一行来编辑它。内置的iOS Reminders应用程序具有此行为。

我已关注Apple's advice on managing the keyboard,但只滚动显示您正在键盘上方编辑的行,不是其下方的行

我尝试在scrollRectToVisible:调整框架,但没有区别。实际上,注释掉这行代码似乎根本就没有效果。

似乎UITableView总是会尝试滚动显示正在键盘上方编辑的UITextfield,而我无法找到调整或覆盖此行为的方法,以便它也显示了它下面的行。

更新

我发现可以通过覆盖scrollTextFieldToVisible的私有UITextField方法来阻止自动滚动行为。 但是,Apple在链接文档中提供的自动滚动代码仍无效。

2 个答案:

答案 0 :(得分:0)

您可以尝试设置setContentOffset属性而不是scrollRectToVisible。喜欢

<table class="table attendance" ng-repeat="task in groupAttendance| groupBy: 'taskId'">
    <caption class="header-primary">
      <a>Task {{($index + 1)}} | {{task[0].title}}</a>
    </caption>
    <thead>
      <tr class="header-secondary">
        <th ng-repeat="date in task| unique: 'classDate'">
          {{getDayOfWeek(date.classDate)}}
          <br> {{formatClassDate(date.classDate)}}
        </th>
      </tr>
    </thead>

    <tbody>
      <tr ng-repeat="student in task | groupBy: 'studentId' | toArray: true | orderBy: orderByName">
        <td ng-repeat="attendance in student track by attendance.attendanceId">
          <md-button class="attendance-button" ng-click="showEditAttendanceDialog($event, attendance)" ng-disabled="isDisabled">
            <md-icon ng-class="{'green-700': present, 'red-700': absent, 'yellow-700': absentWithReason}">
              {{attendanceStatus(this)}}
            </md-icon>
          </md-button>
        </td>
      </tr>
    </tbody>
  </table>

答案 1 :(得分:0)

请按照以下链接,这将使您的工作变得非常轻松。 只需添加文件并将tableview类名称设置为&#34; TPKeyboardAvoidingTableView&#34;

https://github.com/michaeltyson/TPKeyboardAvoiding