2011-09-13 28 views
11

मैं एक कस्टम स्पष्ट बटन (UIButton) को UITextField में दाएं दृश्य के रूप में जोड़ रहा हूं, हालांकि मुझे लगता है कि viewMode पर कुछ अजीब व्यवहार है। व्यू मोड सेट होने के बावजूद, सामान्य स्पष्ट बटन के रूप में प्रदर्शित नहीं होता है। नीचे दिए गए उदाहरण कोड:UITextField rightViewMode अजीब व्यवहार

UITextField *f = [[[UITextField alloc] init] autorelease]; 
f.frame = CGRectMake(0, 0, 300, 44); 
f.backgroundColor = [UIColor clearColor]; 
f.textColor = [UIColor whiteColor]; 

f.clearButtonMode = UITextFieldViewModeNever; 

UIImage *image = [UIImage imageNamed:@"Image.png"]; 

UIButton *b = [UIButton buttonWithType:UIButtonTypeCustom]; 
b.frame = CGRectMake(0, 0, image.size.width, image.size.height); 
[b setImage:image forState:UIControlStateNormal]; 

f.rightView = b; 
f.rightViewMode = UITextFieldViewModeWhileEditing; 

बटन ठीक से दिखाई देते निम्नलिखित राज्यों में:

  • शो जबकि केंद्रित और कोई पाठ
  • शो जबकि केंद्रित और
  • टाइपिंग को छिपा देता है जब कोई फोकस

हालांकि, यदि टेक्स्टफील्ड में पहले से ही सामग्री है, और आप उस पर ध्यान केंद्रित करते हैं तो स्पष्ट बटन नहीं है किस तरह। इसे फिर से दिखाने के लिए आपको सभी टेक्स्ट को हटाना होगा, और आगे और पीछे फ़ोकस करना होगा।

मुझे इस समस्या के साथ कोई और नहीं मिला है, इसलिए थोड़ी देर के लिए इस पर मेरा सिर खरोंच कर रहा है। किसी भी प्रकाश शेडिंग बहुत सराहना की।

+0

का समाधान के लिए बस बटन does not को बिल्कुल भी दिखाई स्पष्ट करने के लिए? शायद छवि आकार/बटन आकार को कम करने का प्रयास करें? ive चीजें दिखाई नहीं दे रही थी क्योंकि वे बहुत बड़े थे। – Codr

+0

क्या आपने ऐप्पल को एक बग फाइल किया था? – user500

+0

'UITextFieldViewModeAlways' संपत्ति को जोड़ने के लिए मत भूलना। –

उत्तर

8

इस बग ठीक करता है:

- (BOOL)becomeFirstResponder 
{ 
    BOOL ret = YES ; 

    ret = [super becomeFirstResponder] ; 

    if(ret && (_setupClearButtonMode == UITextFieldViewModeWhileEditing)) 
     self.rightViewMode = UITextFieldViewModeAlways ; 

    return ret ; 
} 

- (BOOL)resignFirstResponder 
{ 
    BOOL ret = YES ; 

    ret = [super resignFirstResponder] ; 

    if(ret && (_setupClearButtonMode == UITextFieldViewModeWhileEditing)) 
     self.rightViewMode = UITextFieldViewModeWhileEditing ; 

    return ret ; 
} 

वर _setupClearButtonMode init पर सेट के साथ UITextField के अपने उपवर्ग में।

1

मैंने हाल ही में एक ही समस्या में भाग लिया और UITextFieldViewModeAlways पर सही दृश्य मोड सेट करना समाप्त कर दिया और मैन्युअल रूप से उस बटन को छुपा/छुपाया जब इसकी आवश्यकता होती है (प्रॉक्सी प्रतिनिधि जो टेक्स्ट फ़ील्ड स्टेटस पर नजर रखता है, सेट बटन की दृश्यता और वास्तविक प्रतिनिधि को संदेश भेजता है) ।

1

सरल कोड इस समस्या

- (void)textFieldDidBeginEditing:(UITextField *)textField 
{ 
    textField.rightViewMode=UITextFieldViewModeAlways; 
} 

- (BOOL)textFieldShouldEndEditing:(UITextField *)textField 
{ 
    textField.rightViewMode=UITextFieldViewModeNever; 
    return YES; 
} 
संबंधित मुद्दे