13

テキスト フィールドがあり、ユーザーがそれを押してカスタム ピッカーを表示する必要があります。

ピッカーは正常に表示されますが、問題はキーボードが下部に表示されることであり、それは望ましくありません。

これは、iPhone から変換しようとしている iPad プロジェクトです。iPhone では、これはうまく機能し、キーボードは常に非表示になっています。

ここで何を行方不明/忘れている可能性がありますか?

編集


将来の参考のために、ここで実際に起こったことは、実際には両方の時間 (iPhone と iPad) でキーボードが隠されていなかったことです。下から飛び出していたピッカーが上にあったのでキーボードを隠していたので、iPhoneに隠されていると思っただけです。しかし、iPadではそうではありませんでした。

とにかく、以下に提案するデリゲートメソッドを使用して修正しました。

注意、私はこの答えを受け入れました。これは、私が欲しかったものに具体的に答えたものだったからです。残りの答えは正しく、他の実装の方が良いと考えています。

4

8 に答える 8

32
-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
    // Here You can do additional code or task instead of writing with keyboard
    return NO;
}

このデリゲート メソッドは、テキスト フィールドにヒットしたときに最初に呼び出されます。ブール値として NO を書き込むと、編集を開始したくないため、キーボードが表示されません。

于 2013-02-28T14:20:15.150 に答える
8
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
    if(textfield == yourtextField)
    {
        [textfield resignFirstResponder];
        // Show you custom picker here....
        return NO;
    }     
}

uitextfielddelegateコントローラーに を実装する必要があります。

デリゲートを に割り当てyourtextFieldます。

于 2013-02-28T12:48:12.113 に答える
1

textFieldDelegateを使用します。

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
 textField=nil;
 return NO;
}
于 2013-02-28T12:45:13.743 に答える
1

迅速な 3.0 バージョン

最初にテキスト フィールドのデリゲートを設定します

self.textfield.delegate = self

次に、拡張機能で

extension ViewController: UITextFieldDelegate {
    func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
        return false
    }
}
于 2017-07-07T15:53:01.197 に答える
0
-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
    // Here you can do for Specific text Field by 
    if (textField==(the text field you don't want to show keyboard)) {
        NSLog(@"don't show keyboard");
        return NO;
    }
    else {
        return YES;
    }
}
于 2014-07-24T09:31:20.107 に答える