Ваши атрибуты данных toggle
и target
неверны.
data-toggle="collapse" data-target="#hanshuber"
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js"></script>
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css" rel="stylesheet"/>
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<a class="navbar-brand" href="#">Storyfactory</a>
<button class="navbar-toggler collapsed bg-primary" type="button" data-toggle="collapse" data-target="#hanshuber" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="hanshuber">
<ul class="navbar-nav mr-auto">
<li class="nav-item">
<a class="nav-link" href="/">Home</a>
</li>
</ul>
<a href="/user/2" class="mr-3"><i class="fas fa-user"></i></a>
<a href="#"><i class="fas fa-sign-out-alt"></i></a>
</div>
</nav>
Насколько я знаю, нажмите события к прозрачным частям окон, не поставляются Вашему приложению вообще, таким образом, ни одно из нормальных цепочечных событием переопределений (т.е.-hitTest:-sendEvent: и т.д.), будет работать. Единственным путем я могу думать, первое, что пришло на ум должен использовать Кварцевые Касания События, чтобы получить все щелчки мышью и затем выяснить, ли они по прозрачной области Вашего окна вручную. Это, откровенно говоря, походит на огромный ЛАВАШ для не много усиления.
Вы пытались переопределить
- (NSView *)hitTest:(NSPoint)aPoint
в Вашем подклассе NSView?
Можно переопределить hitTest
метод в Вашем NSView
так, чтобы это всегда возвращало себя.
Согласно документации NSView, hitTest
метод или возвратит NSView, на который пользователь нажал, или nil
если точка не в NSView
. В этом случае я вызвал бы [super hitTest:]
, и затем возвратите текущее представление, только если результат иначе был бы nil
(на всякий случай Ваше пользовательское представление содержит подпредставления).
- (NSView *)hitTest:(NSPoint)aPoint
{
NSView * clickedView = [super hitTest:aPoint];
if (clickedView == nil)
{
clickedView = self;
}
return clickedView;
}
Джордж: вы упомянули, что пытались заполнить части почти прозрачным, но не совсем прозрачным цветом. В моем тестировании это работает, только если значение альфа выше 0,05, так что вам может повезти с чем-то вроде этого:
[[NSColor colorWithCalibratedRed:0.01 green:0.01 blue:0.01 alpha:0.05] set];
Это уродливая кладжа, но она может работать достаточно хорошо, чтобы избежать использования касания события.