2012-02-07 10 views
7

के लिए इनपुट AccessoryView के रूप में मैंने UIToolBar को UIBarButtonItem के साथ UITextView के लिए inputAccessoryView के रूप में जोड़ा है। यह ठीक काम करता है लेकिन UIBarButtonItem इसके फ्रेम के बाहर स्पर्श करने योग्य है, शायद दाएं से बाहर 50 पिक्सल। यह कोई बड़ा सौदा नहीं है लेकिन यह मुझे परेशान करता है। किसी को पता है क्यों?आईओएस - UIToolBar के रूप में UITextView

UIToolbar *toolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, self.view.bounds.size.height, 320, 44)]; 
toolBar.barStyle = UIBarStyleBlack; 
toolBar.translucent = YES; 

UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(doneWriting:)]; 
[toolBar setItems:[NSArray arrayWithObjects:doneButton, nil]]; 

self.messageTextView.inputAccessoryView = toolBar; 

उत्तर

2

उपकरण पट्टी उनकी सीमा से परे बटन के सक्रिय क्षेत्र का विस्तार करने की अगर वहाँ उपकरण पट्टी में कोई अन्य आसपास के बटन होते हैं लगता है:

यह मेरा कोड (एआरसी) है। ऐप्पल इंजीनियरों को यह सोचना चाहिए कि अनुमान लगाने की कोशिश करना बेहतर है कि उपयोगकर्ता कहां दबाए जाने के बजाए प्रेस करने का इरादा रखता है।

+0

यदि ऐसा है, तो मेरे लिए यह "स्लॉपी" प्रोग्रामिंग जैसा लगता है जिसमें बटन 'सीमाओं के बाहर प्रतिक्रिया करता है, ओह ठीक है। –

7

आईओएस 6 में यह अपेक्षा के अनुसार व्यवहार करता प्रतीत होता है। अच्छा टिप: आप बटन बाईं के बजाय सही पर प्रकट करना चाहते हैं, इनमें से किसी एक का उपयोग करें:

[toolBar setItems:[NSArray arrayWithObjects:flexibleSpace, doneButton, nil]]; 
2

मुझे आशा है कि यह आप में मदद करता है:

UIBarButtonItem *flexibleSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil]; 

फिर साथ उपकरण पट्टी आरंभ। ..

UIToolbar* keyboardDoneButtonView = [[UIToolbar alloc] init]; 
[keyboardDoneButtonView sizeToFit]; 

UIBarButtonItem* PrevButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:105 target:nil action:nil]; //< 
UIBarButtonItem* NextButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:106 target:nil action:nil]; //> 
UIBarButtonItem* doneButton = [[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStyleBordered target:self action:@selector(doneClicked:)]; 

UIBarButtonItem* flexSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; 
UIBarButtonItem *fake = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil] ; 

[keyboardDoneButtonView setItems:[NSArray arrayWithObjects: PrevButton,fake, NextButton,fake,flexSpace,fake,doneButton,nil] animated:YES]; 

उपयोग नकली आइटम बटन पर सटीक चुटकी स्थान प्राप्त करने के लिए ...

+0

बहुत ही रोचक समाधान, यह मेरे लिए काम करता है, धन्यवाद। – carlos16196