---
title: WebUIDelegate
framework: webkit
role: symbol
role_heading: Protocol
path: webkit/webuidelegate
---

# WebUIDelegate

Web view user interface delegates implement this protocol to control the opening of new windows, augment the behavior of default menu items displayed when the user clicks elements, and perform other user interface–related tasks. These methods can be invoked as a result of handling JavaScript or other plug-in content. Delegates that display more than one web view per window, for example, need to implement some of these methods to handle that case. The default implementation assumes one window per web view, so non-conventional user interfaces might implement a user interface delegate.

## Declaration

```swift
protocol WebUIDelegate : NSObjectProtocol
```

## Topics

### Creating and Closing Windows

- [webView(_:createWebViewModalDialogWith:)](webkit/webuidelegate/webview(_:createwebviewmodaldialogwith:).md)
- [webViewRunModal(_:)](webkit/webuidelegate/webviewrunmodal(_:).md)
- [webView(_:createWebViewWith:)](webkit/webuidelegate/webview(_:createwebviewwith:).md)
- [webViewClose(_:)](webkit/webuidelegate/webviewclose(_:).md)

### Moving and Resizing Windows

- [webViewIsResizable(_:)](webkit/webuidelegate/webviewisresizable(_:).md)
- [webView(_:setResizable:)](webkit/webuidelegate/webview(_:setresizable:).md)
- [webView(_:setFrame:)](webkit/webuidelegate/webview(_:setframe:).md)
- [webViewFrame(_:)](webkit/webuidelegate/webviewframe(_:).md)

### Making Windows Key and Main

- [webViewFocus(_:)](webkit/webuidelegate/webviewfocus(_:).md)
- [webViewUnfocus(_:)](webkit/webuidelegate/webviewunfocus(_:).md)

### Ordering Windows

- [webViewShow(_:)](webkit/webuidelegate/webviewshow(_:).md)

### Working with the Responder Chain

- [webViewFirstResponder(_:)](webkit/webuidelegate/webviewfirstresponder(_:).md)
- [webView(_:makeFirstResponder:)](webkit/webuidelegate/webview(_:makefirstresponder:).md)

### Handling Mouse Events

- [webView(_:mouseDidMoveOverElement:modifierFlags:)](webkit/webuidelegate/webview(_:mousedidmoveoverelement:modifierflags:).md)
- [webView(_:contextMenuItemsForElement:defaultMenuItems:)](webkit/webuidelegate/webview(_:contextmenuitemsforelement:defaultmenuitems:).md)

### Opening Panels

- [webView(_:runJavaScriptAlertPanelWithMessage:initiatedBy:)](webkit/webuidelegate/webview(_:runjavascriptalertpanelwithmessage:initiatedby:).md)
- [webView(_:runJavaScriptConfirmPanelWithMessage:initiatedBy:)](webkit/webuidelegate/webview(_:runjavascriptconfirmpanelwithmessage:initiatedby:).md)
- [webView(_:runJavaScriptTextInputPanelWithPrompt:defaultText:initiatedBy:)](webkit/webuidelegate/webview(_:runjavascripttextinputpanelwithprompt:defaulttext:initiatedby:).md)
- [webView(_:runOpenPanelForFileButtonWith:)](webkit/webuidelegate/webview(_:runopenpanelforfilebuttonwith:).md)
- [webView(_:runOpenPanelForFileButtonWith:allowMultipleFiles:)](webkit/webuidelegate/webview(_:runopenpanelforfilebuttonwith:allowmultiplefiles:).md)
- [webView(_:runBeforeUnloadConfirmPanelWithMessage:initiatedBy:)](webkit/webuidelegate/webview(_:runbeforeunloadconfirmpanelwithmessage:initiatedby:).md)

### Displaying Status Messages

- [webView(_:setStatusText:)](webkit/webuidelegate/webview(_:setstatustext:).md)
- [webViewStatusText(_:)](webkit/webuidelegate/webviewstatustext(_:).md)

### Managing Toolbars and the Status Bar

- [webViewAreToolbarsVisible(_:)](webkit/webuidelegate/webviewaretoolbarsvisible(_:).md)
- [webView(_:setToolbarsVisible:)](webkit/webuidelegate/webview(_:settoolbarsvisible:).md)
- [webViewIsStatusBarVisible(_:)](webkit/webuidelegate/webviewisstatusbarvisible(_:).md)
- [webView(_:setStatusBarVisible:)](webkit/webuidelegate/webview(_:setstatusbarvisible:).md)

### Controlling Drag Behavior

- [webView(_:dragDestinationActionMaskFor:)](webkit/webuidelegate/webview(_:dragdestinationactionmaskfor:).md)
- [webView(_:dragSourceActionMaskFor:)](webkit/webuidelegate/webview(_:dragsourceactionmaskfor:).md)
- [webView(_:willPerform:for:)](webkit/webuidelegate/webview(_:willperform:for:).md)
- [webView(_:willPerform:from:with:)](webkit/webuidelegate/webview(_:willperform:from:with:).md)

### Controlling Other Behaviors

- [webView(_:shouldPerformAction:fromSender:)](webkit/webuidelegate/webview(_:shouldperformaction:fromsender:).md)
- [webView(_:validate:defaultValidation:)](webkit/webuidelegate/webview(_:validate:defaultvalidation:).md)

### Printing

- [webView(_:print:)](webkit/webuidelegate/webview(_:print:).md)
- [webViewHeaderHeight(_:)](webkit/webuidelegate/webviewheaderheight(_:).md)
- [webViewFooterHeight(_:)](webkit/webuidelegate/webviewfooterheight(_:).md)
- [webView(_:drawHeaderIn:)](webkit/webuidelegate/webview(_:drawheaderin:).md)
- [webView(_:drawFooterIn:)](webkit/webuidelegate/webview(_:drawfooterin:).md)

### Constants

- [Menu Item Tags](webkit/menu-item-tags.md)
- [WebDragDestinationAction](webkit/webdragdestinationaction.md)
- [WebDragSourceAction](webkit/webdragsourceaction.md)

## Relationships

### Inherits From

- [NSObjectProtocol](objectivec/nsobjectprotocol.md)

## See Also

### Setting Up a Web View (Legacy)

- [WebView](webkit/webview-swift.class.md)
- [WebPreferences](webkit/webpreferences.md)
- [WebEditingDelegate](webkit/webeditingdelegate.md)
