2012-02-17 17 views
2

私はiOSOpenDevを使用して通知センターのためのweeappを作っています。私はUIViewUITextFieldを持っており、UITextFieldDelegateプロトコルを実装しています。iOS 5 WeeAppでUITextFieldクリアボタンが動作しないのはなぜですか?

私の問題は、textFieldShouldClearメソッドがUITextFieldのクリアボタンをクリックしても呼び出されないということです。 shouldChangeCharactersInRangeやtextFieldShouldReturnなどの他のインターフェイスメソッドは問題なく呼び出されます。

インターフェイスメソッドが呼び出されない理由は何ですか?

答えて

0

テキストフィールドのデリゲートが自己であることを確認してください:

theTextField.delegate = self; 

私はUIActionSheetがUITextFieldDelegateプロトコルを吸い上げ、および通知センターは、同じことを行う可能性があることを聞いたことがある...

+0

textFieldのデリゲートは既にselfに設定されていますが、違いはありません。 – icecreamhead

+0

UITextfieldデリゲートを変更するものを見つけて(それをselfに設定するものを除く)、コメントアウトします。その後、それが動作するかどうかを確認します。 NSLogはあなたの状況では難しいので、私はファイルに書き込む何かを使用します。 –

1

私はこの問題を抱えていましたユーザーが画面上のどこか他の場所をタップしたときにキーボードを外していたとき。私はタップを探しているジェスチャー認識プログラムを持っていて、タップが検出されると、テキストフィールドのresignFirstResponderを呼び出します。残念ながら、それはクリアボタンを破ります。彼らは少し手動ボタンタップトリガすることによって、複雑、テーブルビューの外にあることを確認するためのタップをフィルタリングした私がやった

:グラハム・パークスの答えに続き

// In: - (void)handleTap:(UITapGestureRecognizer *)sender { 
// The user tapped outside a text field, drop the keyboard. 
// Unfortunately this normally breaks the clear button, so we'll check that the 
// tap is outside the table view (and therefore not on a clear button). 
BOOL inButton = CGRectContainsPoint(self.signInButton.bounds, [sender locationInView:self.signInButton]); 
BOOL inTable = CGRectContainsPoint(self.tableView.bounds, [sender locationInView:self.tableView]); 
if (!inTable && !inButton) { 

    BOOL didEndEditing = [self.view endEditing:NO]; 

    // But... if we were editing a field (& therefore the keyboard is showing), 
    // and if they tapped the sign in button, sign in. Not sure where the 
    // onSignIn event is getting lost. The button does highlight. But the 
    // call to endEditing seems to eat it. 
    if (didEndEditing && inButton) { 
     [self onSignIn:self.signInButton]; 
    } 
} 
0

を、私は私のresignFirstResponderコールをするように変更しました:

[self.focusInput performSelector: @selector(resignFirstResponder) 
         withObject: nil 
         afterDelay: 0.2f]; 

キーボードは意図したとおりに自動的に非表示になりますが、クリアボタンの機能は元に戻ります。

関連する問題