2016-05-03 19 views
-3

こんにちは私はプログラムでビューを作成しました。ラベルとテキストフィールドを追加しました。しかし、テキストフィールドをタップすると、テキストフィールドが機能しません。デリゲートメソッドを呼び出すことさえありません。これで助けてください。UITextFieldが応答しない

ループのために、私は、テキストフィールドのプロパティをretrunする//

方法をテキストフィールドを持つビューを作成し、lable

func createTextFieldForDropDown(entity:ListingCategoryFeaturesEntity,ival:Int,ypos:CGFloat) -> UIView 
    { 
     var posY = ypos 
     var posX = CGFloat(0) 
     let width = (SCREEN_WIDTH/2)-15 
     var height = CGFloat(40) 

     let viewRadio = UIView() 
     viewRadio.frame = CGRectMake(posX, posY, width, height) 
     viewRadio.backgroundColor = UIColor.greenColor() 
     height = 40 

     posY = 0 

     let lblTitle = UILabel() 
     lblTitle.frame = CGRectMake(posX, posY, width, height) 
     lblTitle.text = entity.strDisplayName 
       lblTitle.backgroundColor = UIColor.redColor() 
     lblTitle.font = GRAPHICS.FONT_REGULAR(16) 
     viewRadio.addSubview(lblTitle) 

     let tag = 9000 
     posX = lblTitle.frame.maxX+10 

     var textField = UITextField() 
     textField.frame = CGRectMake(posX, posY, width, height) 
     textField = returnTextFieldsProperties(textField, placeHolderText: "", tagValue: tag+ival) 
     textField.backgroundColor = UIColor.blueColor() 
     textField.becomeFirstResponder() 
     viewRadio.addSubview(textField) 


     return viewRadio 
    } 
する//

widgetsView.addSubview(createTextFieldForDropDown(entity,ival:i,ypos: posY)) 

方法をテキストフィールドを作成するためのこの戻りメソッドを呼び出しています

func returnTextFieldsProperties(textField : UITextField ,placeHolderText : String ,tagValue : Int) -> UITextField 
    { 
     textField.attributedPlaceholder = NSAttributedString(string:placeHolderText, 
      attributes:[NSForegroundColorAttributeName: UIColorFromRGB(colorLightGray, alpha: 1.0)]) 
     textField.font = GRAPHICS.FONT_REGULAR(14) 
     textField.textAlignment = NSTextAlignment.Left 
     textField.textColor = UIColor.blackColor() 
     textField.delegate = self 
     textField.userInteractionEnabled = true 
     textField.returnKeyType = UIReturnKeyType.Next 
     let view_left = UIView() 
     view_left.frame = CGRectMake(20,0,10,textField.frameHeight) 
     textField.leftView = view_left 
     textField.leftViewMode = UITextFieldViewMode.Always 
     textField.borderStyle = UITextBorderStyle.RoundedRect 
     textField.backgroundColor = UIColor.clearColor() 
     textField.autocorrectionType = .No 
     textField.tag = tagValue 
     return textField 
    } 
+0

:に

viewRadio.frame = CGRectMake(posX, posY, width, height) 

変更:ラベルとのTextViewの両方を保持するのに十分なviewRadioが広いことを確認します。しかし、私は動的にすべてを作成する必要があります。これについて助けてください。 –

+0

'viewRadio.userInteractionEnabled = true'を設定してみてください。 – vacawama

+0

いいえ動作しません。 –

答えて

0

削除するようにしてください:

textField.becomeFirstResponder() 

これはすべてのテキストフィールドにそのマークが付いているので問題になるかもしれませんが、あなたが望むのは、タップしたテキストフィールドのみが最初のレスポンダであることです。

0

私はあなたが最初にデリゲートメソッドを設定するテキストフィールドは、

はその期待し

var textField = UITextField() 
textField.frame = CGRectMake(posX, posY, width, height) 
textField = returnTextFieldsProperties(textField, placeHolderText: "", tagValue: tag+ival) 

**textField.delegate = self** 

textField.backgroundColor = UIColor.blueColor() 
viewRadio.addSubview(textField) 
で作成した場合は
import UIKit 
class ViewController: UIViewController, UITextFieldDelegate 

を、デリゲートメソッドを設定し、以下のプロジェクトで使用を確認し、

ていなかったと思いますお役に立ちました

+0

私はdelegateとそのメソッドを追加しました。私はこのメソッドから別のテキストフィールドセットを持っています。それはうまくいきます。これはデリゲートに当たっていないテキストフィールドです –

0

問題は、textFieldがスーパービューの境界内にないことです。viewRadio私が直接作業しているテキストフィールドを追加した場合

viewRadio.frame = CGRectMake(posX, posY, SCREEN_WIDTH, height) 
+0

幅を変更しようとしています。しかしまだそれはありません –

+0

私はあなたの元のコードに簡単な変更を提案した。あなたが上に投稿したコードから始めてください。 – vacawama

関連する問題