2011-04-17 74 views
0

请我有时间这个问题不解决创立和adressing您为:)机械手尚未显示

我有UIPickerView它必须从视图的底部显示,当用户点击在为UITextField(这是我的应用程序的要求强迫我做的),所以我实现这个方法来捕捉文本字段的触摸事件:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ 

    UITouch *touch; 
    touch=[touches anyObject]; 
    CGPoint point=[touch locationInView:self.view]; 
    if(CGRectContainsPoint([typeCarburantTextField frame],point)) 
    { 
     [self pickerTypeCarburantsShow]; 

    } 

} 

这种方法来防止键盘被显示在用户的时候点击文本字段:

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{ 

    return NO; 

} 

pickerTypeCarburantsShow

-(IBAction)pickerTypeCarburantsShow{ 

     [UIView beginAnimations:nil context:nil]; 
     [UIView setAnimationDuration:0.5]; 
     CGAffineTransform transform=CGAffineTransformMakeTranslation(0, 240); 
     pickerViewTypesCarburants.transform=transform; 
     [self.view addSubview:pickerViewTypesCarburants]; 
     [UIView commitAnimations]; 

    } 

我所有的IB连接都还不错,但是当我运行,我点击的UITextField键盘不会出现,但我没有看到选择器显示 pleaaaase帮助,thx预先:)

回答

1

什么你可能想大概是这样的..

的UITextField具有这个属性,

inputView

自定义输入视图中显示当文本字段成为第一个响应者。

@property (readwrite, retain) UIView *inputView 

讨论 如果在此属性的值为零,该文本字段显示标准系统键盘当它成为第一个响应者。为该属性分配自定义视图会导致该视图被呈现。

此属性的默认值为零。

所以,显示另一视图代替所要求的键盘,所有被用来设置视图,在这种情况下,uipickerview或其作为inputView为文本字段容器...

例如,为了表现出一定的pickerview代替键盘,你可能想

textView.inputView = [[UIPickerView alloc] initWithFrame:CGRectMake(...)]; 
+0

嗨,我的视图的名称,其中包含选择器是“pickerViewTypesCarburants”。应该变成这样:@property(readwrite,retain)UIView * pickerViewTypesCarburants ??并为合成?另外,我不明白你的第二个陈述,应该是textView,不应该是pickerViewTypesCarburants视图? – Malloc 2011-04-17 19:34:23

+0

我已编辑答案...让我知道如果你需要它澄清 – govi 2011-04-17 19:40:01

+0

所以..如果我正确理解它,它将textView.inputView = [自我pickerViewTypesCarburants],考虑到uitextfield被称为文本视图 – govi 2011-04-17 19:40:54

1

您的PickerView是否有它的Delegate和DataSource集?它不会出现在其他地方。

+0

是的,我有它,如果你需要其他方法代码,请告诉我:)) – Malloc 2011-04-17 19:25:41

+0

@Malek请显示你的'pickerTypeCarburantsShow'方法,(通过编辑添加到你的问题)。 – 2011-04-17 19:58:35

+0

好吧,我编辑它:)) – Malloc 2011-04-17 20:22:04

0

我的问题得到解决,所以这个问题是在的UITextField委托方法,我已经实现了错误的方法:

-(BOOL)textFieldShouldReturn:(UITextField *)textField{ 

    [textField resignFirstResponder]; 
    return YES; 
} 

相反,它应该是这个方法来显示UIPickerView:

- (void)textFieldDidBeginEditing:(UITextField *)textField{ 
    [textField resignFirstResponder]; 
    [self pickerTypeCarburantShow]; 
} 

其中pickerTypeCarburantShow是被认为动画整个UIPickerView视图的IBAction为方法..希望这种帮助是谁在同样的问题挣扎:)