UITextFieldおよびテンキーパッドの非表示
 iPhone / iPadでテンキーを非表示にする方法についてお話したいと思います。 
      
        
        
        
      
    
      
        
        
        
      
     ご存知のように、UITextFieldがフォーカスを受け取ると、タイプに応じて英数字または数字のキーボードが表示されます。 このキーボードを非表示にするには、[完了]ボタンをクリックします(さまざまなタイプとラベルがあり、設定可能)。または、メソッドを呼び出します: 
[textField resignFirstResponder]
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
     、したがって、このメソッドを呼び出すことによってのみキーボードを削除できます。  iOS 3.2および4.0がリリースされる前は、ボタンをこの場所に追加することで解決しました(メソッドは汚れていますが、機能し、誰もが満足していました): 
neoos 。 
      
        
        
        
      
     しかし、これらのシステムのリリース後、メソッドは機能しなくなりました。 この方法には別のハックが登場しましたが、私の謙虚な意見では、その価値はありません。 
      
        
        
        
      
    
      
        
        
        
      
     そのため、私はこの方法で多数のリンクを分割することにしました。ユーザーにキーボード以外の場所をクリックさせると、非常に直感的にキーボードが消えます。 キーボードがない場所にたくさんのコントロールがあるので、イベントにサインアップするようにそれらの1つに指示することはオプションではないため、すべての上に透明なボタンを表示し、UIControlEventTouchDownイベントによってキーボードを非表示にすることにしました。 キーボードが表示されたときにのみボタンを表示し、ボタンをクリックしたときにキーボードを非表示にしてボタンを破棄することは価値があります。 これを次のように実装しました。 
      
        
        
        
      
    
      
        
        
        
      
     ヘッダーファイル(これは覚えて後で破棄できるようにするためです): 
      
        
        
        
      
     UIButton* btnInvisible; 
      
        
        
        
      
    
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
     
      
        
        
        
      
     ここでは、キーボードが表示される瞬間をキャッチできるように、クラスにUITextFieldDelegateプロトコルに署名する必要もあります。 何らかの理由で、UITextFieldイベントの標準サブスクリプションが機能しません。 インターフェイスビルダーでは、UITextFieldを指定する必要があります。そのデリゲートがコントローラークラスであるか、イベントの処理を担当するUITextFieldを指定します。 
      
        
        
        
      
    
      
        
        
        
      
     実装ファイル: 
      
        
        
        
      
     #pragma mark - 
      
        
        
        
      
     #pragma mark UITextField delegate 
      
        
        
        
      
     - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField 
      
        
        
        
      
     { 
      
        
        
        
      
     //Create button 
      
        
        
        
      
     btnInvisible = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 320, 240)]; 
      
        
        
        
      
     [btnInvisible addTarget:self action:@selector(hideKeyboard) forControlEvents:UIControlEventTouchDown]; 
      
        
        
        
      
     
      
        
        
        
      
     //Show over the window view, which is at index 0 (usually) 
      
        
        
        
      
     CorreasAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; 
      
        
        
        
      
     [appDelegate.window insertSubview:btnInvisible atIndex:1]; 
      
        
        
        
      
     
      
        
        
        
      
     return YES; 
      
        
        
        
      
     } 
      
        
        
        
      
     
      
        
        
        
      
     - (void)hideKeyboard 
      
        
        
        
      
     { 
      
        
        
        
      
     //Hide keyboard 
      
        
        
        
      
     [quantityField resignFirstResponder]; 
      
        
        
        
      
     
      
        
        
        
      
     //Hide and release button 
      
        
        
        
      
     [btnInvisible removeFromSuperview]; 
      
        
        
        
      
     [btnInvisible release]; 
      
        
        
        
      
     } 
      
        
        
        
      
    
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
     
      
        
        
        
      
     それだけです。 非表示のボタンの下にあるコントロールが使用できなくなり、キーボードを削除するために一度押す必要があり、その後コントロールをクリックできるため、ソリューションは最適ではない場合があります。 しかし、実装は簡単で、私の意見では非常にユーザーフレンドリーです。 
 
      
        
        
        
      
    
All Articles