0

私はUIScrollView2つviewのsを並べて持っており、それぞれが画面全体をカバーしています。それらはユーザーのアクションで目に見える境界に移動され、一度に 1 つのみが画面を覆います。これらの両方のビューには、複数のUITextFields. シミュレーターを使用してtextField、最初のビューに a を入力し、Tab キーを押すと、他のビューfirstResponderの a に割り当てられtextFieldます。私は、デバイスを使用する際に、ユーザーがそれを行うことができないことを理解しています. しかし、ユーザーが Bluetooth キーボードや同様のアクセサリを使用している場合はどうでしょうか。現在表示されていない textField が になることは望ましくありませんfirstResponder。これはできますか?

編集:メソッドを思い出しましたcanBecomeFirstRespondertextFieldしかし、どちらがこれからになるかをどのように判断すればよいbecomeFirstResponderでしょうか?

4

1 に答える 1

1

問題は、2 つのテキスト フィールド間をタブで移動できないことではなく、表示されていないテキスト フィールドを編集できず、タブで移動できる必要があることのようです。両方が同時に表示されている場合は、それらの間。

タブを制限する代わりに、UITextField デリゲート メソッド -textFieldShouldBeginEditing: を実装します。これにより、そのテキスト フィールドがファーストレスポンダーになるかどうかにかかわらず、ブール値を返すことができます。

次のようなもの:

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
    //  Only edit if the text field is visible
    return !textField.isHidden;
}

テキスト フィールドの「表示可能」ステータスに合わせて、このコードを調整する必要がある場合があります。

于 2013-10-09T07:08:59.123 に答える