还有另一个关于此的问题,但这与此无关,因为我认为这与iOS 11的测试版有关。
我将这两个UIButton
分组在UIView
内。这个UIView放在UIBarButtonItem
里面,使用Interface Builder将整个内容设置为Left Bar Button Items
。
每个按钮在单击时会显示由故事板触发的弹出框。
我正在使用Xcode 8运行iOS 9的iPad 3上进行测试。这非常有效。
现在我决定在我的iPad Pro 9.7"这是运行iOS 11 beta 7.我正在使用Xcode 9 beta 6.当我在iPad Pro上运行时,导航栏上的所有按钮都已消失。他们不会对点击做出回应。现在我尝试使用相同的Xcode 9 beta 6并使用iOS 9在iPad 3上运行该应用程序,并且再次完美地工作。
我正在为iOS 9.1编译。
按钮甚至不突出显示以确认点击,就像在iOS 9上一样。
iOS 11 beta 7和条形按钮项是否存在问题?
有什么想法吗?
答案 0 :(得分:15)
我发现使用XCode 8构建的相同代码在ios10-11上运行良好,但是当我使用XCode 9 UIBarButtonItem构建自定义视图时,不会对点击做出响应。
看起来问题出现了,因为从ios 11导航栏使用自动布局而不是处理帧。屏幕上的按钮看起来不错,但从技术上讲它们似乎是屏幕外的。
所以我的修复是将自动布局约束添加到我的自定义视图。
//my custom view init
let view = MyCustomView()
view.frame = CGRect(x: 0, y: 0, width: 44, height: 44)
let rightButtonItem = UIBarButtonItem(customView: view)
//constraints
let widthConstraint = view.widthAnchor.constraint(equalToConstant: 44)
let heightConstraint = view.heightAnchor.constraint(equalToConstant: 44)
heightConstraint.isActive = true
widthConstraint.isActive = true
//add my view to nav bar
self.rightBarButtonItem = rightButtonItem
在该自定义右键按钮成功获得点击后。
答案 1 :(得分:4)
I have discovered the problem! Amazing bug!
This is the drill. I was adding two buttons to the left navigation item by doing this:
class RouteList(ListView):
model = DailyRoute
template_name = 'route_list.html'
def get_queryset(self):
if DailyRoute.objects.filter( stage = '1').exists():
query_set = DailyRoute.objects.filter(owner=employer, stage = '1').order_by('route')
else:
query_set = []
return query_set
inside that view.This was compiled for iOS 9 and works on a device with iOS 10 and below but not iOS 11.
The "correct" way of doing this is this
org.apache.commons.io.FileUtils.touch(yourFile)
to the left navigation item.try
{
String filePath = "C:\sheet.xlsx";
FileWriter fw = new FileWriter(filePath );
}
catch (IOException e)
{
System.out.println("File is open");
}
to the left navigation item.You will see that iOS allows that to happen and will manage both buttons under "navigation items".
this will work on all iOS versions I have tested from 9 thru 11.
答案 2 :(得分:3)
我通过将此方法添加到UIBarButtonItem来实现此功能:
[self.barBTNItem setWidth:44];
答案 3 :(得分:2)
让我们点击:
UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(manualAdd.dismissKeyboard))
tap.cancelsTouchesInView = false // this line is required for xcode 9
view.addGestureRecognizer(tap)
答案 4 :(得分:0)
升级到iOS 11时遇到了同样的问题。
包含按钮的UIView的大小为0x0。
我在Interface Builder上修复了UIView的高度x宽度,之后就可以了。