Iphone UIToolbar上最左侧和最右侧的按钮很难单击

Iphone UIToolbar上最左侧和最右侧的按钮很难单击,iphone,uitoolbar,uitoolbaritem,Iphone,Uitoolbar,Uitoolbaritem,我花了几天的时间试图解决这个问题,因此我决定与您分享解决方案,以便您能够为您的家人奉献更多的时间: 假设您有一个UIToolbar,它需要容纳大量按钮,例如5。 当用户试图点击最左边或最右边的按钮时,她通常会点击相邻的按钮。最初代码看起来是这样的: self.bookmarkButton = [[[UIBarButtonItem alloc] ...; self.sendButton = [[[UIBarButtonItem alloc] ...; self.backstageBut

我花了几天的时间试图解决这个问题,因此我决定与您分享解决方案,以便您能够为您的家人奉献更多的时间:

假设您有一个UIToolbar,它需要容纳大量按钮,例如5。 当用户试图点击最左边或最右边的按钮时,她通常会点击相邻的按钮。最初代码看起来是这样的:

self.bookmarkButton = [[[UIBarButtonItem alloc] ...;
 self.sendButton = [[[UIBarButtonItem alloc] ...;    
 self.backstageButton = [[[UIBarButtonItem alloc] ...;
 self.voteButton = [[[UIBarButtonItem alloc] ...;
 self.vipButton = [[[UIBarButtonItem alloc] ...;

 UIBarButtonItem *sep0 = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil] autorelease];
 UIBarButtonItem *sep1 = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil] autorelease];
 UIBarButtonItem *sep2 = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil] autorelease];
 UIBarButtonItem *sep3 = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil] autorelease];


 [self setItems:[[[NSArray alloc] initWithObjects: self.bookmarkButton, sep0, self.sendButton, sep1, self.voteButton , sep2, self.backstageButton, sep3,  self.vipButton, nil]  autorelease]];
我尝试了一些技巧,比如设置显式按钮宽度和移除分隔符,增加最左侧和最右侧按钮的宽度,但由于各种原因,它们都不起作用

解决此问题最可靠的方法是再引入两个分隔符,一个位于最左侧按钮的左侧,另一个位于最右侧按钮的右侧。诸如此类:

self.bookmarkButton = [[[UIBarButtonItem alloc] ...;
 self.sendButton = [[[UIBarButtonItem alloc] ...;   
 self.backstageButton = [[[UIBarButtonItem alloc] ...;
 self.voteButton = [[[UIBarButtonItem alloc] ...;
 self.vipButton = [[[UIBarButtonItem alloc] ...;

 UIBarButtonItem *sep0 = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil] autorelease];
 UIBarButtonItem *sep1 = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil] autorelease];
 UIBarButtonItem *sep2 = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil] autorelease];
 UIBarButtonItem *sep3 = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil] autorelease];

UIBarButtonItem *sepLeft = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil] autorelease];

UIBarButtonItem *sepRight = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil] autorelease];

 [self setItems:[[[NSArray alloc] initWithObjects: sepLeft, self.bookmarkButton, sep0, self.sendButton, sep1, self.voteButton , sep2, self.backstageButton, sep3,  self.vipButton, sepRight, nil]  autorelease]];
这完全解决了问题。当然,所有按钮都稍微向中间移动,如您在此处所见:

但这是一个合理的代价